我创建了一个虚拟网络,如下所示:
$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 中存在的更新对象。