VMware PowerCLI – Export / Import VM Folders vCenter

Pour continuer dans la lignée du post VMware vCenter – Export / Import SSO Roles & Permissions qui permet de sauvegarder la structure des Roles et Permissions, dans le cas par exemple d’une corruption de SSO ou d’une migration vers un nouveau vCenter, je vais vous présenter encore une fois des scripts du forum VMware provenant aussi de LucD que j’ai légèrement adapté pour recréer cette arborescence de dossiers de machines virtuelles.

Car si vous utilisez le classement par dossiers il est primordial d’avoir les « VM Folders » sur lesquels attacher ces permissions.

L’export va créer un listing au format CSV des VM du vCenter avec leur folder respectif, ce qui va permettre ensuite à l’import de recréer les folders et d’y integrer les VM, une fois les ESXi rattachés sur le nouveau vCenter.

[pastacode lang= »bash » manual= »write-host%20-nonewline%20%22Datacenter%20Name%20%3A%20%22%0A%24dcName%20%3D%20read-host%0A%0ANew-VIProperty%20-Name%20’BlueFolderPath’%20-ObjectType%20’VirtualMachine’%20-Value%20%7B%0A%20%20%20%20param(%24vm)%0A%0A%20%20%20%20function%20Get-ParentName%7B%0A%20%20%20%20%20%20%20%20param(%24object)%0A%0A%20%20%20%20%20%20%20%20if(%24object.Folder)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24blue%20%3D%20Get-ParentName%20%24object.Folder%0A%20%20%20%20%20%20%20%20%20%20%20%20%24name%20%3D%20%24object.Folder.Name%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20elseif(%24object.Parent%20-and%20%24object.Parent.GetType().Name%20-like%20%22Folder*%22)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24blue%20%3D%20Get-ParentName%20%24object.Parent%0A%20%20%20%20%20%20%20%20%20%20%20%20%24name%20%3D%20%24object.Parent.Name%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20elseif(%24object.ParentFolder)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24blue%20%3D%20Get-ParentName%20%24object.ParentFolder%0A%20%20%20%20%20%20%20%20%20%20%20%20%24name%20%3D%20%24object.ParentFolder.Name%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if(%22vm%22%2C%22Datacenters%22%20-notcontains%20%24name)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24blue%20%2B%20%22%2F%22%20%2B%20%24name%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24blue%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20(Get-ParentName%20%24vm).Remove(0%2C1)%0A%7D%20-Force%20%7C%20Out-Null%20%0A%0AGet-VM%20-Location%20(Get-Datacenter%20-Name%20%24dcName)%20%7C%20%0ASelect%20Name%2CBlueFolderPath%20%7C%0AExport-Csv%20%22C%3A%5CvCenter_VM_Folders.csv%22%20-NoTypeInformation%20-UseCulture%20″ message= »Export VM Folders vCenter » highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »write-host%20-nonewline%20%22New%20Datacenter%20Name%20%3A%20%22%0A%24newDatacenter%20%3D%20read-host%0A%0A%24startFolder%20%3D%20Get-Folder%20-Name%20vm%20-Location%20(Get-Datacenter%20-Name%20%24newDatacenter)%0A%0AImport-Csv%20%22C%3A%5CvCenter_VM_Folders.csv%22%20-UseCulture%20%7C%20%25%7B%0A%20%20%20%20%24location%20%3D%20%24startFolder%0A%20%20%20%20%24_.BlueFolderPath.TrimStart(‘%2F’).Split(‘%2F’)%20%7C%20%25%7B%0A%20%20%20%20%20%20%20%20%24tgtFolder%20%3D%20Get-Folder%20-Name%20%24_%20-Location%20%24location%20-ErrorAction%20SilentlyContinue%0A%20%20%20%20%20%20%20%20if(!%24tgtFolder)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24location%20%3D%20New-Folder%20-Name%20%24_%20-Location%20%24location%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24location%20%3D%20%24tgtFolder%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%24vm%20%3D%20Get-VM%20-Name%20%24_.Name%20-ErrorAction%20SilentlyContinue%0A%20%20%20%20if(%24vm)%7B%0A%20%20%20%20%20%20%20%20Move-VM%20-VM%20%24vm%20-Destination%20%24location%20-Confirm%3A%24false%20%0A%20%20%20%20%7D%0A%7D » message= » Import VM Folders vCenter » highlight= » » provider= »manual »/]


Mathieu

Je suis actuellement ingénieur spécialisé dans le design d'environnements cloud virtualisés. Adepte des technologies de VMware, Nutanix, Citrix et Microsoft je propose à travers ce blog diverses astuces de troubleshooting.

S’abonner
Notification pour
guest

0 Commentaires
Commentaires en ligne
Afficher tous les commentaires