如何检索正确的子网资源 ID 以创建虚拟网络规则?
How to retrieve the proper Subnet Resource Id to create a virtual network rule?
我这样创建了一个虚拟网络:
$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
将包含子网 ID 短名称。您尝试输入的 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 中。
我这样创建了一个虚拟网络:
$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
将包含子网 ID 短名称。您尝试输入的 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 中。