变量中的PowerShell变量

dog*_*rld 5 powershell azure

我正在尝试添加一个$numberOfNics基于数字添加nics 的变量.现在这是我的代码,我对如何将它放入循环感到困惑.我知道一个数组可能是要走的路,但不太确定如何在这个意义上创建一个只调用变量而不是设置它们的数组.

旧代码:

$numberOfNics=1

$networkname1 = "ondemandport1"
$networkname2 = "ondemandport2"
$networkname3 = "ondemandport3"
$networkname4 = "ondemandport4"
$networkname5 = "ondemandport5"
$networkname6 = "ondemandport6"
$networkname7 = "ondemandport7"
$networkname8 = "ondemandport8"
$networkname9 = "ondemandport9"

$networkInterface1 = New-AzureRmNetworkInterface -Name $networkname1

$networkInterface2 = New-AzureRmNetworkInterface -Name $networkname2 

$networkInterface3 = New-AzureRmNetworkInterface -Name $networkname3 

$networkInterface4 = New-AzureRmNetworkInterface -Name $networkname4 

$networkInterface5 = New-AzureRmNetworkInterface -Name $networkname5
Run Code Online (Sandbox Code Playgroud)

为了整理这个,我想做一个像这样的循环

for ($i = 0; $i -lt $numberOfNics; $i++)
{
    $networkInterface$i = New-AzureRmNetworkInterface -Name $networkname$i
}
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢马丁,但现在我无法调用变量.

$networkInterfaces = 1 .. $numberOfNics | ForEach-Object { 
if ($a -eq 0){
    New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Name "ondemandport$_" -Location $locationName -SubnetId $virtualNetwork.Subnets[$a].Id -PublicIpAddressId $publicIp.Id -force
    }
ElseIf ($a=1){
    New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Name "ondemandport$_" -Location $locationName -SubnetId $virtualNetwork.Subnets[$a].Id -force
    }
Else{
    New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Name "ondemandport$_" -Location $locationName -SubnetId $virtualNetwork.Subnets[2].Id -force 
    }

}
Run Code Online (Sandbox Code Playgroud)

#也希望将其变成一个数组循环

$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[1].Id -Primary
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[2].Id
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[3].Id
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[4].Id 
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[5].Id
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[6].Id
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[7].Id 
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[8].Id
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterfaces[9].Id
Run Code Online (Sandbox Code Playgroud)

错误消息:Add-AzureRmVMNetworkInterface:无法验证参数"Id"的参数.参数为null或空.提供非null或空的参数,然后再次尝试该命令.

Owa*_*sau 0

你应该能够做这样的事情:

$numberOfNics= 10
$networkname = "ondemandport"

$networkInterface = @()

for ($i = 0; $i -le $numberOfNics; $i++)
{
    $networkInterface += ,@( New-AzureRmNetworkInterface -Name ($networkname + $i ))
}
Run Code Online (Sandbox Code Playgroud)

不确定它是否可以与 New-AzureRmNetworkInterface 一起使用,但可以与其他 New- 命令一起使用