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
.