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.

write-host -nonewline "Datacenter Name : "
$dcName = read-host

New-VIProperty -Name 'BlueFolderPath' -ObjectType 'VirtualMachine' -Value {
    param($vm)

    function Get-ParentName{
        param($object)

        if($object.Folder){
            $blue = Get-ParentName $object.Folder
            $name = $object.Folder.Name
        }
        elseif($object.Parent -and $object.Parent.GetType().Name -like "Folder*"){
            $blue = Get-ParentName $object.Parent
            $name = $object.Parent.Name
        }
        elseif($object.ParentFolder){
            $blue = Get-ParentName $object.ParentFolder
            $name = $object.ParentFolder.Name
        }
        if("vm","Datacenters" -notcontains $name){
            $blue + "/" + $name
        }
        else{
            $blue
        }
    }

    (Get-ParentName $vm).Remove(0,1)
} -Force | Out-Null 

Get-VM -Location (Get-Datacenter -Name $dcName) | 
Select Name,BlueFolderPath |
Export-Csv "C:\vCenter_VM_Folders.csv" -NoTypeInformation -UseCulture 
Export VM Folders vCenter
write-host -nonewline "New Datacenter Name : "
$newDatacenter = read-host

$startFolder = Get-Folder -Name vm -Location (Get-Datacenter -Name $newDatacenter)

Import-Csv "C:\vCenter_VM_Folders.csv" -UseCulture | %{
    $location = $startFolder
    $_.BlueFolderPath.TrimStart('/').Split('/') | %{
        $tgtFolder = Get-Folder -Name $_ -Location $location -ErrorAction SilentlyContinue
        if(!$tgtFolder){
            $location = New-Folder -Name $_ -Location $location
        }
        else{
            $location = $tgtFolder
        }
    }
    
    $vm = Get-VM -Name $_.Name -ErrorAction SilentlyContinue
    if($vm){
        Move-VM -VM $vm -Destination $location -Confirm:$false 
    }
}
Import VM Folders vCenter


...BofBienTrès BienTop ! 1 vote(s)
Loading...

Mathieu

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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *