Azure-Powershell 脚本错误(ip 地址增量)

Azure-Powershell Script error (ip address increment )

希望大家一切顺利

你能帮我解决这个问题吗?

$ipnumber = 3
$RgName = "test"
$Location = "test"

for ($i = 0; $i -lt $ipnumber; $i++) {
    $res1 = -join ((1..10) | ForEach-Object { get-random -minimum 97 -maximum 122 | ForEach-Object { [char]$_ } })
    $res2 = -join ((1..10) | ForEach-Object { get-random -minimum 97 -maximum 122 | ForEach-Object { [char]$_ } })
    
    $PublicIP = '$PublicIP'
    $IpConfigName = '$IpConfigName'
    $IpConfig = '$IpConfig'
    $ip = '10.0.0.'
    $x = 25
    $PublicIP = $PublicIP + $i
    $IpConfigName = $IpConfigName + $i
    $IpConfig = $IpConfig + $i
    $x = 25 + $i
    $ip = $ip + $x
    #####################################
    # Create a public IP address
    $PublicIP = New-AzPublicIpAddress `
        -Name "$res1" `
        -ResourceGroupName $RgName `
        -Location $Location `
        -AllocationMethod dynamic
    #Create an IP configuration with a dynamic private IP address and assign the public IP address to it
    $IpConfigName = "$res2"
    $IpConfig = New-AzNetworkInterfaceIpConfig `
        -Name $IpConfigName `
        -Subnet $Subnet `
        -PrivateIpAddress $ip `
        -PublicIpAddress $PublicIP

}

$rand6 = -join ((1..10) | ForEach-Object { get-random -minimum 97 -maximum 122 | ForEach-Object { [char]$_ } })
$NIC = New-AzNetworkInterface `
    -Name $rand6 `
    -ResourceGroupName $RgName `
    -Location $Location `
    -NetworkSecurityGroupId $NSG.Id `
    -IpConfiguration $IpConfig0, $IpConfig1, $IpConfig2

错误 1 ​​: enter image description here

错误2: 新 AzNetworkInterface:C:\Users\Marouane\Desktop\testpowershell\test2.ps1:95:22 线 | 95 | -IpConfiguration $IpConfig, $IpConfig0, $IpConfig1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |无法绑定参数 'IpConfiguration'。无法将类型“System.String”的“$IpConfig1”值转换为类型 | “Microsoft.Azure.Commands.Network.Models.PSNetworkInterfaceIPConfiguration”。

我想把IP加1 例如:10.0.0.25 下一个 10.0.0.26 下一个 10.0.0.27 但它说你不能输入 'IpConfiguration' String ips 所以我该怎么做 ? 请帮我!! 谢谢

我认为 Mainich 您正在尝试进行数组操作。

如果我理解正确,您正在尝试创建以下变量的数组:

$PublicIP = $PublicIP + $i
$IpConfigName = $IpConfigName + $i
$IpConfig = $IpConfig + $i

例如,

IpConfig1、Ipconfig2、Ipconfig3 - 并相应地存储值。

不幸的是,执行有点错误

请注意:我已经详细说明了$ipconfig变量的操作。您可以将其扩展到其他变量,例如 $IpConfigName,$PublicIP

到底发生了什么

对于所有迭代,$IpConfig 得到更新并且您想要的变量 IpConfig1、Ipconfig2、Ipconfig3 不是通过上述逻辑创建的。

  1. 您正在将变量 ipConfig 初始化为字符串
  2. 用字符串值覆盖变量 ipconfig 的值 $ipconfig1(第一次迭代)
  3. 用对象覆盖变量 ipconfig 的字符串值。

AzNetworkInterfaceIpConfig

迭代1结束, $ipconfig 的值为 AzNetworkInterfaceIpConfig ipconfig1 不存在。

建议:

下面创建一个带有固定数字的空数组 - 在你的例子中 3 为 $ipnumber = 3

$ipconfig = @() * $ipnumber

$ipconfig.append(New-AzNetworkInterfaceIpConfig `
    -Name <>`
    -Subnet<>`
    -PrivateIpAddress <> `
    -PublicIpAddress <>)

(或)

$ipconfig[0] = New-AzNetworkInterfaceIpConfig `
        -Name <>`
        -Subnet<>`
        -PrivateIpAddress <> `
        -PublicIpAddress <>

现在您可以通过 ipconfig[0]、ipconfig[1]、ipconfig[2] 访问这些值 或者您可以直接传递 $ipconfig - 因为参数 Ip 配置接受数组值

-IpConfiguration <PSNetworkInterfaceIPConfiguration[]>

https://docs.microsoft.com/en-us/powershell/module/az.network/new-aznetworkinterface?view=azps-5.0.0

建议2:

如果您更喜欢像 ipconfig1、ipconfig2、ipconfig3 这样即时创建变量,那么您可以执行以下操作:

New-Variable -Name "Ipconfig$i" -Value <>
New-Variable -Name "Ipconfig$i" -Value <>
Get-Variable -Name "Ipconfig$i" -ValueOnly