PowerCLI / Powershell для изменения количества мониторов виртуальных машин - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь настроить скрипт, который можно запустить для автоматического изменения количества мониторов всех виртуальных машин в указанной папке c. Любая помощь будет принята с благодарностью. Ниже приведена текущая итерация сценария:

#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' не может быть найдено для этого объекта. Убедитесь, что свойство существует и может быть установлено.

Исключительная ситуация, вызывающая 'ReconfigVM' с аргументами "1": "Обязательное устройство свойства отсутствует в объекте данных типа VirtualDeviceConfigSpec при анализе сериализованного объекта DataObject типа vim.vm.device .VirtualDeviceSpe c

1 Ответ

0 голосов
/ 12 февраля 2020

удалось устранить ошибку.

Финальная версия l oop:

#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
      }

   }

   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...