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 不是通过上述逻辑创建的。
- 您正在将变量 ipConfig 初始化为字符串
- 用字符串值覆盖变量 ipconfig 的值
$ipconfig1(第一次迭代)
- 用对象覆盖变量 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
希望大家一切顺利
你能帮我解决这个问题吗?
$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 不是通过上述逻辑创建的。
- 您正在将变量 ipConfig 初始化为字符串
- 用字符串值覆盖变量 ipconfig 的值 $ipconfig1(第一次迭代)
- 用对象覆盖变量 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