为什么使用Azure资源管理器Powershell cmdlet创建的子网的ID为空?

Ada*_*dam 1 azure azure-virtual-network azure-powershell azure-resource-manager

我正在尝试在Azure中配置一些网络资源,并且正在尝试尝试引用以前创建的子网Id属性的步骤遇到了一个阻止程序。

这是检索子网详细信息的命令:

$gwsubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet

然后$gwsubnet在控制台中输出的值:

Name : GatewaySubnet Id : Etag : ProvisioningState : AddressPrefix : 10.1.1.0/24 IpConfigurations : null NetworkSecurityGroup : null RouteTable : null

请注意,该Id属性为null。这会导致以后的步骤出错,例如:

$gwipconfig = New-AzureRmVirtualNetworkGatewayIpConfig -Name config1 -SubnetId $gwsubnet.Id -PublicIpAddressId $gwpip.Id

给出以下错误:

New-AzureRmVirtualNetworkGatewayIpConfig : Cannot validate argument on parameter 'SubnetId'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again. At line:1 char:99 + ... nfig -SubnetId $gwsubnet.Id -PublicIpAddressId $gwpip.Id + ~~~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [New-AzureRmVirtualNetworkGatewayIpConfig], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Azure.Commands.Network.NewAzureVirtualNetworkGatewayIpConfigCommand

我正在努力为子网Id分配地址。这是我需要再次注销/登录才能看到的东西吗?谢谢您的帮助。

Mic*_*l B 5

您遇到的问题是,直到创建虚拟网络,才创建子网ID。

运行Get-AzureRmVirtualNetworkSubnetConfig所有创建的内容时,要附加的配置New-AzureRmVirtualNetwork一旦运行该命令,它将连接到Azure,部署Vnet,创建子网,并在该状态下创建一个子网ID。

以下代码将向您展示我的意思...

$DNSNameLabel = "mydnsname"
$NetworkName = "MyNet"
$NICName = "MyNIC"
$PublicIPAddressName = "MyPIP"
$SubnetName = "MySubnet"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"

$SingleSubnet = New-AzureRmVirtualNetworkSubnetConfig `
                -Name $SubnetName `
                -AddressPrefix $SubnetAddressPrefix

#At this point nothing is created, so there is no valid subnet id

$Vnet = New-AzureRmVirtualNetwork -Name $NetworkName `
                -ResourceGroupName $ResourceGroupName `
                -Location $LocationName `
                -AddressPrefix $VnetAddressPrefix `
                -Subnet $SingleSubnet

#vnet and subnet are created, both get an id and etag

 $vnet = Get-AzureRmVirtualNetwork -Name $NetworkName 
                -ResourceGroupName $ResourceGroupName 

$vnet.Subnets[0].Id 
Run Code Online (Sandbox Code Playgroud)

哪个会给

/ subscriptions / {Subscription ID} /resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyNet/subnets/MySubnet