使用 Powershell Az 命令时未创建子网

Subnets are not getting created while using Powershell Az commands

我有下面的 PowerShell 脚本来在 Azure

中创建 vnetsubnet
 $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=