使用 Powershell Az 命令时未创建子网
Subnets are not getting created while using Powershell Az commands
我有下面的 PowerShell 脚本来在 Azure
中创建 vnet
和 subnet
$virtualNetworkName = 'corp-northeurope-vnet'
$frontendSubnetName = 'frontendsubnet'
$vNetAddressPrefix = "10.0.0.0/26"
$SubnetAddressPrefix = "10.0.1.0/28"
$virtualNetwork = Get-AzVirtualNetwork -Name $virtualNetworkName -ResourceGroupName $rgName
if ($null -eq $virtualNetwork) {
$virtualNetwork = New-AzVirtualNetwork `
-Name $virtualNetworkName `
-ResourceGroupName $rgName `
-AddressPrefix $vNetAddressPrefix `
-Location $location
}
else {
Write-Log -Message "[$($virtualNetwork.Name)] already exists"
}
$fesubnet = Get-AzVirtualNetworkSubnetConfig -Name $frontendSubnetName -VirtualNetwork $virtualNetwork
if ($null -eq $fesubnet) {
$fesubnet = Add-AzVirtualNetworkSubnetConfig `
-Name $frontendSubnetName `
-AddressPrefix $subnetAddressPrefix `
-VirtualNetwork $virtualNetwork
$virtualNetwork | Set-AzVirtualNetwork
}
else {
Write-Log -Message "[$($fesubnet.Name)] already exists"
}
但是不行。
此处抛出错误
$virtualNetwork | Set-AzVirtualNetwork
Subnet 'frontendsubnet' is not valid in virtual network 'corp-northeurope-vnet'. StatusCode: 400 ReasonPhrase: Bad Request ErrorCode: NetcfgInvalidSubnet ErrorMessage: Subnet 'frontendsubnet' is
| not valid in virtual network 'corp-northeurope-vnet'. OperationID : 06c1ed77-14f1-294d-a19a-41c2epbdd04f
是否与 IP 范围有关?
一个问题是第二个命令行。
如果您说您已经创建了一个 Vnet、一个子网、一个 Vnet IP CIDR 前缀和一个子网 IP CIDR 前缀,则子网的命令不是 $frontendSubnetName
,“Frontend”是名称Vnet“corp-northeurope-vnet”中包含的子网。
$frontendSubnetName = 'frontendsubnet'
命令frontendSubnetName错误,正确的应该是:
$subnetConfig = 'frontendsubnet'
尝试使用这些命令:
$virtualNetworkName = 'corp-northeurope-vnet'
$subnetConfig = 'frontendsubnet'
$vNetAddressPrefix = "10.0.0.0/26"
$SubnetAddressPrefix = "10.0.1.0/28"
这里是官方文档:https://docs.microsoft.com/en-us/azure/virtual-network/quick-create-powershell
您的子网地址前缀导致的错误。当您的 VNet 地址前缀为 10.0.0.0/26 时。那么你的子网地址范围应该小于10.0.0.0/26。您可以将子网前缀更改为 10.0.0.0/28。那就没问题了。
子网的IP范围不在VNET的IP范围内,导致子网配置无效。
因此,要么将子网地址前缀更改为 VNET 地址前缀,要么扩展 VNET 地址前缀,使其包含您尝试创建的子网范围。
用于规划 IP 地址前缀的好工具是:http://jodies.de/ipcalc?host=10.0.0.0&mask1=26&mask2=
我有下面的 PowerShell 脚本来在 Azure
中创建vnet
和 subnet
$virtualNetworkName = 'corp-northeurope-vnet'
$frontendSubnetName = 'frontendsubnet'
$vNetAddressPrefix = "10.0.0.0/26"
$SubnetAddressPrefix = "10.0.1.0/28"
$virtualNetwork = Get-AzVirtualNetwork -Name $virtualNetworkName -ResourceGroupName $rgName
if ($null -eq $virtualNetwork) {
$virtualNetwork = New-AzVirtualNetwork `
-Name $virtualNetworkName `
-ResourceGroupName $rgName `
-AddressPrefix $vNetAddressPrefix `
-Location $location
}
else {
Write-Log -Message "[$($virtualNetwork.Name)] already exists"
}
$fesubnet = Get-AzVirtualNetworkSubnetConfig -Name $frontendSubnetName -VirtualNetwork $virtualNetwork
if ($null -eq $fesubnet) {
$fesubnet = Add-AzVirtualNetworkSubnetConfig `
-Name $frontendSubnetName `
-AddressPrefix $subnetAddressPrefix `
-VirtualNetwork $virtualNetwork
$virtualNetwork | Set-AzVirtualNetwork
}
else {
Write-Log -Message "[$($fesubnet.Name)] already exists"
}
但是不行。
此处抛出错误
$virtualNetwork | Set-AzVirtualNetwork
Subnet 'frontendsubnet' is not valid in virtual network 'corp-northeurope-vnet'. StatusCode: 400 ReasonPhrase: Bad Request ErrorCode: NetcfgInvalidSubnet ErrorMessage: Subnet 'frontendsubnet' is | not valid in virtual network 'corp-northeurope-vnet'. OperationID : 06c1ed77-14f1-294d-a19a-41c2epbdd04f
是否与 IP 范围有关?
一个问题是第二个命令行。
如果您说您已经创建了一个 Vnet、一个子网、一个 Vnet IP CIDR 前缀和一个子网 IP CIDR 前缀,则子网的命令不是 $frontendSubnetName
,“Frontend”是名称Vnet“corp-northeurope-vnet”中包含的子网。
$frontendSubnetName = 'frontendsubnet'
命令frontendSubnetName错误,正确的应该是:
$subnetConfig = 'frontendsubnet'
尝试使用这些命令:
$virtualNetworkName = 'corp-northeurope-vnet'
$subnetConfig = 'frontendsubnet'
$vNetAddressPrefix = "10.0.0.0/26"
$SubnetAddressPrefix = "10.0.1.0/28"
这里是官方文档:https://docs.microsoft.com/en-us/azure/virtual-network/quick-create-powershell
您的子网地址前缀导致的错误。当您的 VNet 地址前缀为 10.0.0.0/26 时。那么你的子网地址范围应该小于10.0.0.0/26。您可以将子网前缀更改为 10.0.0.0/28。那就没问题了。
子网的IP范围不在VNET的IP范围内,导致子网配置无效。
因此,要么将子网地址前缀更改为 VNET 地址前缀,要么扩展 VNET 地址前缀,使其包含您尝试创建的子网范围。
用于规划 IP 地址前缀的好工具是:http://jodies.de/ipcalc?host=10.0.0.0&mask1=26&mask2=