Home > vmware, vsphere > Import–Export dei custom attributes delle VM tramite PowerCLI

Import–Export dei custom attributes delle VM tramite PowerCLI

Qualche tempo fa, durante una migrazione, mi e’ capitato di dover migrare tutti i valori degli attributi custom delle VM da un vCenter ad un altro.

Per quanto fosse un compito facile (basta ricreare gli attributi e copiare via via i valori), c’erano più di 400 VM e non volevo farlo a mano.

Niente di meglio che usare un po’ di PowerCLI ! Ecco qui i due piccoli script che ho usato.

 

Export

Per prima cosa connettiamoci al vCenter sorgente e esportiamo tutti i custom attribute:

Connect-VIserver -server VCsource.vlab.local

$attList = @()
$attList = Get-CustomAttribute -TargetType VirtualMachine
$attList | Export-Csv “.\exported-attributes.csv” –NoTypeInformation

ora esportiamo anche tutti i valori dei custom attibute delle varie VM e disconnettiamoci:

$valueList =@()
Get-cluster CL01 | get-vm | % {
for($i = 0; $i -lt $_.CustomFields.Count; $i ++ ){
$row = “” | Select VMname, FieldKey, FieldValue
$row.VMname = $_.Name
$row.FieldKey = $_.CustomFields.Keys[$i]
$row.FieldValue = $_.CustomFields.Values[$i]
$valueList += $row
}
}
$valueList | Export-Csv “.\exported-attributes-value.csv” -NoTypeInformation

 

Disconnect-VIServer –server “*” -Confirm:$False

 

Import

Ok, ora è il momento di importare tutto nel vCenter destinazione (ovviamente dopo aver migrato le varie VM).

Per prima cosa connettiamoci al vCenter destinazione e ricreiamo gli attribute:

Connect-VIserver -server VCdest.vlab.local

$attList = @()
$attList = Import-Csv “.\exported-attributes.csv”
foreach ($CustAttrib in $attList){
New-CustomAttribute -Name $CustAttrib.Name -TargetType $CustAttrib.TargetType
}

ed infine importiamo i valori e disconnettiamoci:

$NewAttribs = Import-Csv “.\exported-attributes-value.csv”
foreach($line in $NewAttribs){
# if value is empty, skip it (just to have all the import go faster)
if( $line.FieldValue -ne “”) {
Set-CustomField -Entity (get-vm $line.VMName) -Name $line.FieldKey -Value $line.FieldValue -confirm:$false
}
}

Disconnect-VIServer “*” -Confirm:$False

 

Meglio così che farsi un lungo e noioso lavoro di copiatura no?  Occhiolino

Categories: vmware, vsphere Tags: ,
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: