簡體   English   中英

通過PowerCLI和ReconfigVM從VM Advanced Config中刪除條目

[英]Remove an entry from VM Advanced Config via PowerCLI and ReconfigVM

http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html#reconfigure

我正在編寫腳本來更新虛擬機的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)
}

現在,假設我在更改值之前為配置規范創建了一個備份哈希表。 由於這些值在更新之前不存在,因此沒有優先值。

$null引發錯誤。

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

空的""不更新

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

我可以簡單地還原布爾值並將整數值設置為0 ,但是我寧願只是從配置中刪除該值。

文檔指出以下有關extraconfig

虛擬機的其他配置信息。 這描述了對其他選項的一組修改。 如果鍵存在但未設置值或值為空字符串,則刪除選項。 否則,將密鑰設置為新值。

與將通過ConfigSpec對象中的其他字段顯式配置的參數沖突的配置鍵將被忽略。

編輯

傳遞一個空格字符(即" " )會將值設置為false0

顯然,您必須下載vmx文件(存儲這些選項的位置),然后在關閉虛擬機電源的情況下重新上傳修改后的文件,並且可能也未注冊。

$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文件中刪除該行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM