![](/img/trans.png)
[英]Calling PowerShell script inside guest VM with PowerCLI Invoke-VMScript
[英]PowerCLI / Powershell to change monitor count of VM
我正在嘗試設置一個腳本,該腳本可以運行以自動更改特定文件夾中所有 VM 的監視器計數。 任何幫助將不勝感激。 以下是腳本的當前迭代:
#Variable Declaration
$vcenter = Gc-UserInputFromList("vcenter instances go here")
$tenant = Get-UserInput "Enter the 4 digit tenant ID"
[int]$NumDisplays
#vSphere connection
$session = Connect-Viserver -Server $vcenter
#Change Monitor Count
$vms = get-vm -Location $tenant
Foreach ($vm in $vms){
$VideoAdapter = $vm.ExtensionData.Config.Hardware.Device | where {$vm.GetType().Name -eq "VirtualMachineVideoCard"}
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$Config = New-Object VMware.Vim.VirtualDeviceConfigSpec
$Config.device.numDisplays = 3
$Config.operation = "edit"
$spec.deviceChange += $Config
$VMView = $vm | Get-View
$VMView.ReconfigVM($spec)
}
盡管我努力解決,但目前仍收到這些錯誤
在此對象上找不到屬性“numDisplays”。 驗證該屬性是否存在並且可以設置。
使用“1”參數調用“ReconfigVM”的異常:“在解析 vim.vm.device.VirtualDeviceSpec 類型的序列化 DataObject 時,VirtualDeviceConfigSpec 類型的數據對象缺少所需的屬性設備
能夠解決錯誤。
循環的最終版本是:
#Variable Declaration
$vcenter = Gc-UserInputFromList("vcenter instances go here")
$tenant = Get-UserInput "Enter the 4 digit tenant ID"
[int]$NumDisplays
#vSphere connection
$session = Connect-Viserver -Server $vcenter
#Change Monitor Count
$vms = get-vm -Location $tenant
#The script
Function setMonitorCount {
$vms = get-vm -Location $tenant
Foreach ($vm in $vms){
if ($vm.PowerState -eq "PoweredOff") {
$VideoAdapter = $vm.ExtensionData.Config.Hardware.Device | where {$_.GetType().Name -eq "VirtualMachineVideoCard"}
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$Config = New-Object VMware.Vim.VirtualDeviceConfigSpec
$Config.device = $VideoAdapter
$Config.device.numDisplays = 3
$Config.operation = "edit"
$spec.deviceChange += $Config
$VMView = $vm | Get-View
$VMView.ReconfigVM($spec)
Write-Output "Changing monitor count for $vm and powering back on."
$poweredOn = Start-VM $vm
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.