温馨提示:本文翻译自stackoverflow.com,查看原文请点击:PowerShell - How to retrieve the proper Subnet Resource Id to create a virtual network rule?
azure-cli powershell

PowerShell - 如何检索适当的子网资源ID以创建虚拟网络规则?

发布于 2020-04-30 14:58:11

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

$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

查看更多

提问者
C. Lightfoot
被浏览
20
AdminOfThings 2020-02-12 07:30

根据你的情况,$virtualNetwork并且$subnet将包含SUBNETID简称。您尝试输入的subnetID语法是对象Name属性PSSubnet

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

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

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