2014-06-12 2 views
1

http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html#reconfigureУдалить запись из VM Advanced Config через PowerCLI и ReconfigVM

Я пишу сценарий для обновления состояния VMX для виртуальных машин для выполнения некоторых стандартов, но и хотят сделать резервную копию своего состояние в случае, если они нуждаются для восстановления. Задача ReconfigVM работает нормально, и я могу вытащить состояние через ($VM | Get-View).config.extraconfig

Что я не могу понять, как удалить элементы, используя VirtualMachineConfigSpec.

Предположим, я обновляю значение как таковое.

$ExtraOptions = @{ 
    "isolation.device.connectable.disable"="true"; 
    "log.rotateSize"="100000"; 
} 

$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec 
Foreach ($Option in $ExtraOptions.GetEnumerator()) { 
    $OptionValue = New-Object VMware.Vim.optionvalue 
    $OptionValue.Key = $Option.Key 
    $OptionValue.Value = $Option.Value 
    $vmConfigSpec.extraconfig += $OptionValue 
} 
# ... 

foreach($vm in $vms){ 
    $vm.ReconfigVM($vmConfigSpec) 
} 

Теперь предположим, что я создал резервную хеш-таблицу конфигурации конфигурации для значений до их изменения. Поскольку эти значения не существовало до обновления, нет никакой ценности.

A $null вызывает ошибку.

"isolation.device.connectable.disable"=$null; 

Пустой "" не делает никакого обновления

"isolation.device.connectable.disable"=""; 

Я мог бы просто вернуться булевы значения и набор целочисленных значений 0, но я предпочел бы просто удалить значение из конфигурации.

The documentation заявляет следующее о extraconfig

Дополнительной информации о конфигурации для виртуальной машины. Здесь описывается набор модификаций дополнительных опций. Опция удаляется, если ключ присутствует, но значение не задано, или значение является пустой строкой. В противном случае ключ устанавливается в новое значение.

Конфигурационные ключи, которые конфликтуют с параметрами, которые явно настраиваются через другие поля в объекте ConfigSpec, молча игнорируются.

РЕДАКТИРОВАТЬ

Передача символ пробела (т.е. " ") будет присвоено значение false или 0.

ответ

1

Apparently Вам необходимо загрузить файл vmx (где эти параметры сохранены), а затем повторно загрузить измененный файл, когда VM отключена и, возможно, также не зарегистрирована.

1
$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec 
$vmConfigSpec.extraconfig = New-Object VMware.Vim.optionvalue 
$vmConfigSpec.extraconfig[0].Key="cloud.uuid" 
$vmConfigSpec.extraconfig[0].Value="" 
$vm.ReconfigVM($vmConfigSpec) 

Принимая знак «плюс» вместе со значением ничего, «» должен удалить строку из файла vmx.

Смежные вопросы