我创建了一个虚拟网络,如下所示:
$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语法是对象的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中存在的更新对象。
然后声明:
"Add-AzureRmDataLakeStoreVirtualNetworkRule: Subnet resource ID 'backendSubnet' is invalid
这是因为进行更改后,您无需查询对象。运行时
Set-AzureRmVirtualNetwork
,您需要执行其他操作Get-AzureRmVirtualNetwork
才能查看所做的更改。谢谢你这么清楚!