From da2456487e15dc63285c25960059fed40d965c86 Mon Sep 17 00:00:00 2001 From: Timur Date: Mon, 28 Oct 2024 09:31:24 +0000 Subject: [PATCH] Add VMware/Migration Folder and Permissions vSphere --- .../Migration Folder and Permissions vSphere | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 VMware/Migration Folder and Permissions vSphere diff --git a/VMware/Migration Folder and Permissions vSphere b/VMware/Migration Folder and Permissions vSphere new file mode 100644 index 0000000..c9f532b --- /dev/null +++ b/VMware/Migration Folder and Permissions vSphere @@ -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 \ No newline at end of file