77 lines
2.8 KiB
Plaintext
77 lines
2.8 KiB
Plaintext
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 |