Add VMware/Migration Folder and Permissions vSphere
This commit is contained in:
parent
36ab4dad46
commit
da2456487e
77
VMware/Migration Folder and Permissions vSphere
Normal file
77
VMware/Migration Folder and Permissions vSphere
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
Import-Module VMware.PowerCLI
|
||||
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Scope Session -Confirm:$false
|
||||
|
||||
# Connect to source vCenter
|
||||
$sourceVC = "xxx"
|
||||
$sourceUser = "xxx"
|
||||
$sourcePassword = "xxx"
|
||||
|
||||
Connect-VIServer -Server $sourceVC -User $sourceUser -Password $sourcePassword
|
||||
|
||||
# Connect to destination vCenter
|
||||
$destVC = "xxx"
|
||||
$destUser = "xxx"
|
||||
$destPassword = "xxx"
|
||||
|
||||
Connect-VIServer -Server $destVC -User $destUser -Password $destPassword
|
||||
|
||||
|
||||
# Funktion zum Kopieren von Ordnern und Berechtigungen für AD-Benutzer
|
||||
function Copy-FolderAndADPermissions {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.FolderImpl]$SourceFolder,
|
||||
[Parameter(Mandatory = $true)]
|
||||
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.FolderImpl]$DestParentFolder
|
||||
)
|
||||
|
||||
# Ordner im Ziel erstellen
|
||||
$newFolder = New-Folder -Name $SourceFolder.Name -Location $DestParentFolder
|
||||
|
||||
# Berechtigungen kopieren, nur für AD-Benutzer, Achtung Escapen! Meine Domain ist lab.home und im VCSA mit LAB\ hinterlegt
|
||||
$permissions = Get-VIPermission -Entity $SourceFolder | Where-Object { $_.Principal -match "LAB\\" }
|
||||
foreach ($perm in $permissions) {
|
||||
try {
|
||||
New-VIPermission -Entity $newFolder -Principal $perm.Principal -Role $perm.Role -Propagate $perm.Propagate
|
||||
}
|
||||
catch {
|
||||
Write-Warning "Konnte Berechtigung für $($perm.Principal) nicht setzen: $_"
|
||||
}
|
||||
}
|
||||
|
||||
# Rekursiv Unterordner kopieren
|
||||
$subFolders = Get-Folder -Location $SourceFolder
|
||||
foreach ($subFolder in $subFolders) {
|
||||
Copy-FolderAndADPermissions -SourceFolder $subFolder -DestParentFolder $newFolder
|
||||
}
|
||||
}
|
||||
|
||||
# Übergeordneten Quellordner angeben
|
||||
$sourceParentFolderName = "XXX" # Nur den Namen des Ordners angeben
|
||||
$sourceDatacenter = Get-Datacenter -Name "Homelab" #VCSA Datacenter angeben
|
||||
|
||||
# Quellordner abrufen
|
||||
$sourceParentFolder = Get-Folder -Name $sourceParentFolderName -Location $sourceDatacenter
|
||||
|
||||
# Prüfen, ob der Quellordner gefunden wurde
|
||||
if ($sourceParentFolder -eq $null) {
|
||||
Write-Error "Der Quellordner '$sourceParentFolderName' konnte nicht gefunden werden."
|
||||
exit
|
||||
}
|
||||
|
||||
# Zielordner angeben & DataCenter
|
||||
$destParentFolderName = "Copy" # Ersetze mit dem tatsächlichen Namen des Zielordners
|
||||
$destParentFolder = Get-Folder -Name $destParentFolderName -Location (Get-Datacenter -Name "Nested Lab Site A")
|
||||
|
||||
# Prüfen, ob der Zielordner gefunden wurde
|
||||
if ($destParentFolder -eq $null) {
|
||||
Write-Error "Der Zielordner '$destParentFolderName' konnte nicht gefunden werden."
|
||||
exit
|
||||
}
|
||||
|
||||
# Ordner und Berechtigungen für AD-Benutzer kopieren
|
||||
Copy-FolderAndADPermissions -SourceFolder $sourceParentFolder -DestParentFolder $destParentFolder
|
||||
|
||||
# Trennung von vCenter-Servern
|
||||
Disconnect-VIServer -Server $sourceVC -Confirm:$false
|
||||
Disconnect-VIServer -Server $destVC -Confirm:$false
|
||||
Loading…
Reference in a new issue