У меня возникла задача переехать в новый vCenter. При планировании работ обратил внимание на потребность переноса полей виртуальных машин Custom Attributes, созданных мной.
В моей инфраструктуре используется два дополнительных поля – Administrator, где указываются основной и дублирующий администратор, поле – Nagios, где указывается имя, под которым сервер занесен в систему мониторинга. Данное поле позволяет осуществлять контроль все ли продуктивные виртуальные машины занесены в Nagios.
В отличии от Notes, созданный вручную Custom Attribute хранится в vCenter и при переходе на чистую базу данных не сохраняется.
Поиск быстро выдал пример скрипта на PowerShell для экспорта-импорта данных полей.
Приведу кусочек кода, немного исправленный и используемый мной.
Экспорт (обратите внимание на указание кодировки для атрибутов на кириллице):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$vmlist = get-vm $Report =@() foreach ($vm in $vmlist) { $row = "" | Select Name, Notes, Key, Value, Key1, Value1 $row.name = $vm.Name $row.Notes = $vm | select -ExpandProperty Notes $customattribs = $vm | select -ExpandProperty CustomFields $row.Key = $customattribs[0].Key $row.Value = $customattribs[0].value $row.Key1 = $customattribs[1].Key $row.Value1 = $customattribs[1].value $Report += $row } $report | Export-Csv "c:\temp\vms-with-notes-and-attributes.csv" -NoTypeInformation -encoding unicode |
Импорт:
1 2 3 4 5 6 7 |
$NewAttribs = Import-Csv "C:\temp\vms-with-notes-and-attributes.csv" foreach ($line in $NewAttribs) { set-vm -vm $line.Name -Description $line.Notes -Confirm:$false Set-CustomField -Entity (get-vm $line.Name) -Name $line.Key -Value $line.Value -confirm:$false Set-CustomField -Entity (get-vm $line.Name) -Name $line.Key1 -Value $line.Value1 -confirm:$false } |