Как получить правильный Su bnet Resource Id для создания правила виртуальной сети? - PullRequest
0 голосов
/ 11 февраля 2020

Я создал виртуальную сеть следующим образом:

$virtualNetwork = New-AzureRmVirtualNetwork -Name MyVirtualNetwork -ResourceGroupName TestResourceGroup -Location centralus -AddressPrefix "10.0.0.0/16"

Затем я создал для нее su bnet и затем установил виртуальную сеть:

Add-AzureRmVirtualNetworkSubnetConfig -Name backendSubnet -VirtualNetwork $virtualNetwork -AddressPrefix "10.0.2.0/24"
$virtualNetwork | Set-AzureRmVirtualNetwork

Затем я получил Недавно созданный su bnet и присвоить ему Id:

$subnet = $virtualNetwork | Get-AzureRmVirtualNetworkSubnetConfig -Name backendSubnet
$subnet.Id = "resourceId"

И попробуйте добавить это в мой AzureRmDataLakeStore, но он не работает:

Add-AzureRmDataLakeStoreVirtualNetworkRule -Account MyAccount -Name VNRule -SubnetId $subnet.Id
Add-AzureRmDataLakeStoreVirtualNetworkRule: Subnet resource ID 'resourceId' is invalid.

Кто-нибудь знает, что я должен вводить для флага -SubnetId? Спасибо.

Решение от начала до конца sh (спасибо @AdminOfThings):

$virtualNetwork = New-AzureRmVirtualNetwork -Name MyVirtualNetwork -ResourceGroupName TestResourceGroup -Location centralus -AddressPrefix "10.0.0.0/16"
Add-AzureRmVirtualNetworkSubnetConfig -Name backendSubnet -VirtualNetwork $virtualNetwork -AddressPrefix "10.0.2.0/24"
$virtualNetwork = $virtualNetwork | Set-AzureRmVirtualNetwork
Add-AzureRmDataLakeStoreVirtualNetworkRule -Account MyAccount -Name VNRule -SubnetId $subnet.Id

1 Ответ

2 голосов
/ 12 февраля 2020

В вашем случае $virtualNetwork и $subnet будут содержать краткое имя subnetID. Синтаксис subnetID, который вы пытаетесь ввести, является свойством Name объекта PSSubnet.

Add-AzureRmDataLakeStoreVirtualNetworkRule -Account MyAccount -Name VNRule -SubnetId $subnet.Name

Похоже, вы хотите присвоить $subnet новый идентификатор, а затем передать его в Add-AzureRmDataLakeStoreVirtualNetworkRule. Когда вы обновляете $subnet.Id, вы обновляете только переменную, а не внутренний объект Azure. Я не знаю, что можно даже обновить свойство этого объекта и отразить его в Azure без его повторного создания.

Когда вы обновите свойства в $virtualNetwork и выполните Set-AzureRmVirtualNetwork, вы будете необходимо снова сохранить вывод этой команды в $virtualNetwork. Только тогда $virtualNetwork будет содержать обновленный объект, существующий в Azure.

...