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