Проблемы начинающих с PowerCLI, несколькими массивами, для циклов - PullRequest
0 голосов
/ 24 февраля 2020

Я весь день гуглял и не могу взломать этот орех. У меня есть csv от RVTools с указанием имени виртуальной машины и указанной VLAN ( Имена столбцов VM & Network ), моя цель состоит в том, чтобы PowerCLI изменил VLAN в vCenter в соответствии с VLAN в CSV.

Сначала я сделал трудный путь для нашей тестовой среды, поместив оба столбца в отдельный массив

$HadesList = "C:\Users\-user-\Desktop\test.csv"
$TestList = Import-CSV $HadesList
$result = ForEach($Line in $TestList) { $Line.VM }
$result2 = ForEach($Line2 in $TestList) {  $Line2.Network  }

    get-vm $result[0] | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $result2[0] -Confirm:$false
...manually changing the numbers...
    get-vm $result[24] | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $result2[24] -Confirm:$false

, который отлично работал в тестовой лаборатории, поскольку в ней было всего 25 ВМ. Но когда мы go сделали это изменение в производстве, я хотел что-то более краткое. Я искал вокруг и нашел, что кто-то делает петли, которые будут возвращать данные, поэтому я попытался использовать его для замены сетевого адаптера, но он выдал ошибку:

$VMData = Import-CSV C:\Users\-user-\Desktop\test.csv
  for ($i=0; $i -lt $VMData.count; $i++){    
Get-VM $VMData.VM[$i] | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $VMData.Network[$i] -Confirm:$false
}

Set-NetworkAdapter: 2/24 / 2020 14:15:41 Set-NetworkAdapter Не удается найти браузер среды для VMHost с идентификатором: 'HostSystem-host-14'.
В строке: 2 символа: 46 + ... rkAdapter | Set-NetworkAdapter -NetworkName $ VMData.Network [$ i] -Conf ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ResourceUnavailable: (HostSystem-host-14: String) [Set-NetworkAdapter], ViError + FullyQualifiedErrorId: Client20_VmHostServiceImpl_TryGetHostEnvironmentBrowser_EnvironmentBrowserNotFound, VMware.VimAutomation.ViCore.Cmdlets.Commands.VirtualDevice.SetNetworkAdapter

Есть ли что-нибудь, что может сработать? Я весь день бился с этим, и даже не могу придумать, как это сформулировать, чтобы получить лучшие результаты поиска.

Ответы [ 2 ]

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

Я попробовал скрипт от Кайла на другом vCenter, и он отлично работал. Странная часть: я не могу найти разницу в PowerCLI между двумя

ошибками:

  • PowerCLI C:> Get-PowerCLIVersion
  • PowerCLI Версия
  • VMware PowerCLI 6.5, выпуск 1, сборка 4624819
  • Версии компонентов
  • VMware Cis Core, компонент PowerCLI 6.5, сборка 4624453
  • VMware VimAutomation, ядро, компонент PowerCLI 6.5, сборка 46, 4624450
  • Компонент VMWare ImageBuilder PowerCLI 6.5, сборка 4561891
  • Компонент VMWare AutoDeploy PowerCLI 6.5, сборка 4561891
  • Компонент VMware Vds PowerCLI 6.5, сборка 4624695
  • Компонент VMware Cloud PowerCLI 6.5 сборка 4624821
  • VMware HA PowerCLI компонент 6.0 сборка 4525225
  • VMware HorizonView PowerCLI компонент 7.0.2 сборка 4596620
  • лицензирование VMware PowerCLI компонент 6.5 сборка 4624822
  • VMware PCloud PowerCLI Компонент 6.5 сборка 4624825
  • VMware Storage PowerCLI Компонент 6.5 сборка 4624820
  • VMware vROps PowerCLI Component 6.5 build 4624824
  • VMware vSphere Update Manager PowerCLI 6.5 build 4540462

Отлично работает:

  • Версия PowerCLI
  • VMware PowerCLI 6.5, выпуск 1, сборка 4624819
  • Версии компонентов
  • VMware Cis Core, компонент PowerCLI 6.5, сборка 4624453
  • VMware VimAutomation Core, компонент PowerCLI 6.5, сборка 4624450
  • VMWare ImageBuilder PowerCLI Компонент 6.5 сборка 4561891
  • VMWare AutoDeploy PowerCLI Компонент 6.5 сборка 4561891
  • VMware Vds PowerCLI Компонент 6.5 сборка 4624695
  • VMware Cloud PowerCLI Компонент 6.5 сборка 4624821
  • VMware HA PowerCLI Компонент 6.0 сборка 4525225
  • VMware HorizonView PowerCLI Компонент 7.0.2 сборка 4596620
  • Лицензирование VMware PowerCLI Компонент 6.5 сборка 4624822
  • VMware PCloud PowerCLI Компонент 6.5 сборка 4624825
  • VMware Storage PowerCLI Компонент 6.5 сборка 46248 20
  • VMware vROps PowerCLI Component 6.5 build 4624824
  • VMware vSphere Update Manager PowerCLI 6.5 build 4540462

Они оба работают на vSphere Client версии 6.7.0.20000, поэтому я на самом деле не может указывать ни на одну причину, она терпит неудачу ни на одном, ни на другом

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

Я думаю, что вы, вероятно, могли бы объединить его до циклического перебора переменной импортированного CSV с именованной переменной для каждой строки.

Пример:

$VMData = Import-CSV C:\Users\-user-\Desktop\test.csv
foreach ($line in $VMData){
   Get-VM $line.VM | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $line.Network -Confirm:$false
}
...