Почему идентификатор подсети, созданный с помощью командлетов Azure Resource Manager Powershell, имеет значение null?

Я пытаюсь выделить некоторые сетевые ресурсы в 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. Это что-то, что мне нужно снова выйти/войти, чтобы увидеть? Спасибо за помощь.


person Adam    schedule 29.03.2016    source источник


Ответы (1)


Проблема заключается в том, что идентификатор подсети не создается до тех пор, пока вы не создадите виртуальную сеть.

Когда вы запускаете Get-AzureRmVirtualNetworkSubnetConfig, все, что вы создаете, — это конфигурация для подключения к New-AzureRmVirtualNetwork. После того, как вы запустите эту команду, она подключится к Azure, развернет виртуальную сеть, создаст подсеть, и в этом состоянии она создаст идентификатор подсети.

Следующий код покажет вам, что я имею в виду...

$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 

Что даст

/subscriptions/{ID подписки}/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyNet/subnets/MySubnet

person Michael B    schedule 29.03.2016