New-VMHostNetworkAdapter — циклический IP-адрес с foreach-object в PowerCLI

Я пытаюсь создать vmkernels для существующих хостов ESXi в vCenter с помощью PowerCLI.

$esxiHosts = @("esxi21.v.lab", "esxi22.v.lab", "esxi23.v.lab", "esxi24.v.lab", "esxi25.v.lab")
$vmhosts = Get-VMHost -Name $esxiHosts
foreach ($i in 31..35)
 {
   $ipa = "192.168.2.$i"
   write-host $vmhosts
   $esxiHosts | foreach-object {New-VMHostNetworkAdapter $_ -PortGroup ManagementNetwork2 -IP $ipa -subnetmask 255.255.255.0 -VirtualSwitch vSwitch0 -ManagementTrafficEnabled $true}
 }

Он создает vmkernels для каждого хоста, однако назначает им всем один и тот же IP-адрес, а затем также показывает следующую ошибку.

New-VMHostNetworkAdapter : 26 Sep 2019 4:21:17 PM       New-VMHostNetworkAdapter                An error occurred during host configuration. Operation failed, diagnostics report: A vmkernel
nic for the connection point already exists:
At line:5 char:30
+ ... ach-object {New-VMHostNetworkAdapter $_ -PortGroup ManagementNetwork2 ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-VMHostNetworkAdapter], PlatformConfigFault
    + FullyQualifiedErrorId : Client20_VmHostServiceImpl_NewVMHostNetworkAdapter_ViError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Host.NewVMHostNetworkAdapter

Насколько я понимаю, это связано с тем, что объект foreach работает внутри цикла, но если я этого не сделаю, я не смогу перебирать IP-адреса, используя только цикл for each, или я могу?


person tryllz    schedule 26.09.2019    source источник


Ответы (1)


Одним из способов решения этой проблемы может быть использование переменной счетчика, поскольку ваш 4-й октет является последовательным. Что-то вроде следующего:

$esxiHosts = @("esxi21.v.lab", "esxi22.v.lab", "esxi23.v.lab", "esxi24.v.lab", "esxi25.v.lab")
$vmhosts = Get-VMHost -Name $esxiHosts
$i = 31
foreach ($vmh in $vmhosts) {
   $ipa = "192.168.2.$i"
   Write-Host $vmh
   New-VMHostNetworkAdapter -VMHost $vmh -PortGroup ManagementNetwork2 -IP $ipa -subnetmask 255.255.255.0 -VirtualSwitch vSwitch0 -ManagementTrafficEnabled $true
   $i++
}
person Kyle Ruddy    schedule 27.09.2019