我正在尝试使用 编写 powershell 脚本(Az latest)现有的 vnet 对等配置add-azvirtualnetworkpeering
。这两个 vnet 位于不同的订阅中。看来我必须为virtualnetwork
和remotenetwork
开关使用一个变量。我可以将我的订阅上下文设置为 1 并应用get-azvirtualnetwork
将其分配给$vnet1
,然后将上下文切换到另一个订阅上下文并分配第二个值。但是当我运行命令(从任一订阅上下文)时,它给了$vnet2
我add-azvirtualnetworkpeering
找不到与参数“virtualnetwork”或“remotenetwork”匹配的参数取决于我所处的环境。参见此处的示例 2https://docs.microsoft.com/en-us/powershell/module/az.network/add-azvirtualnetworkpeering?view=azps-1.6.0除了 RG 已经创建,并且我使用 代替 ,get-azvirtualnetwork
因为new-azvirtualnetwork
它们已经存在。代码如下所示:
PS C:\>set-azcontext (get-azsubscription -subscriptionname "1")
PS C:\>$vnet1 = get-azvirtualnetwork -name "vnet1"
PS C:\>set-azcontext (get-azsubscription -subscriptionname "2")
PS C:\>$vnet2 = get-azvirtualnetwork -name "vnet2"
PS C:\>add-azvirtualnetworkpeering -name "vnet1tovnet2" -virtualnetwork $vnet1 -remotenetwork $vnet2.id -AllowForwardedTraffic
我收到此错误:
Add-AzVirtualNetworkPeering : A parameter cannot be found that matches parameter name 'remotenetwork'. At line:1 char:99 + ... vnet1tovnet2" -virtualnetwork $vnetfrom -remotenetwork $vnet2 ... + ~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Add-AzVirtualNetworkPeering], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.Azure.Commands.Network.AddAzureVirtualNetworkPeeringCommand
答案1
如果您的 vNet 位于同一个租户中,那么使用 set-azcontext 就太过分了,只需使用 select-azsubscription 来更改您正在使用的订阅,这不会影响您的任何变量。
但是,你的参数也是错误的。请查看文档添加 azvirtualnetworkpeering参数是 VirtualNetwork 和远程虚拟网络 ID