这里有两个参数,它将一个IP地址作为输入($ ip和$ ip2)
function createnic () {
param(
[string]$vpg = $(throw "vPG name required."),
[string]$ip = $(throw "IP Address required."),
[string]$ip2 = $(throw "2nd IP Address required."),
[string]$prefixlength = $(throw "Prefix Length required.")
)
$myvdpg = Get-VDPortgroup -Name $vpg
foreach ($vm in $vms) {
New-NetworkAdapter -VM $vm -Portgroup $myvdpg -StartConnected -Type Vmxnet3 -Confirm:$false
foreach ($srv in $list) {
$ipdata = Invoke-Command -ComputerName $srv -ScriptBlock { Get-NetIPConfiguration | where { ($_.InterfaceDescription -like "vmxnet3*" -and $_.IPv4Address.IPaddress -like "169.*") } }
$ipdata = $ipdata.InterfaceIndex
Invoke-Command - ComputerName $srv -ScriptBlock { New-NetIPAddress -InterfaceIndex $using:ipdata -IPAddress $using:ip -PrefixLength $using:prefixlength }
}
}
}
我希望foreach循环在第二次迭代中引用$ ip2,在第一次迭代中引用$ ip。
如果您总是有2个项目$vms
,请改用常规的for
循环:
$ips = $ip,$ip2
for($i = 0; $i -lt 2; $i++)
{
$vm = $vms[$i]
$ipAddress = $ips[$i]
foreach ($srv in $list) {
# ... pass $using:ipAddress to Invoke-Command in here
}
}