如何检索正确的子网资源 ID 以创建虚拟网络规则?



我创建了一个虚拟网络,如下所示:

$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 | Set-AzureRmVirtualNetwork

然后,我获取新创建的子网并为其指定一个 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 标志输入什么?谢谢。

从头到尾的解决方案(谢谢@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

在您的情况下,$virtualNetwork$subnet将包含 subnetID 短名称。您尝试输入的 subnetID 语法是PSSubnet对象的Name属性。

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

您似乎想给$subnet一个新 ID,然后将其传递给Add-AzureRmDataLakeStoreVirtualNetworkRule。更新$subnet.Id时,仅更新变量,而不更新后端 Azure 对象。我不知道是否可以更新该对象的属性并使其反映在 Azure 中而无需重新创建它。

当您更新$virtualNetwork中的属性并执行Set-AzureRmVirtualNetwork时,您需要再次将该命令输出存储到$virtualNetwork中。只有这样,$virtualNetwork才会包含 Azure 中存在的更新对象。

最新更新