与Get-AzureRmRouteConfig一样,Remove-AzureRmRouteConfig不适用于where对象

时间:2018-08-15 17:03:43

标签: azure powershell

Get-AzureRmRouteConfig -RouteTable $rt | Where-Object {$_.Name -like "*virginia*"}

获取具有预期名称的所有路由配置。例如usgovvirginia_1

Remove-AzureRmRouteConfig -RouteTable $rt | Where-Object {$_.Name -like "*virginia*"}

给出此错误

Remove-AzureRmRouteConfig : Sequence contains no matching element
At line:1 char:1
+ Remove-AzureRmRouteConfig -RouteTable $rt | Where-Object {$_.Name -li ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Remove-AzureRmRouteConfig], InvalidOperationException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Network.RemoveAzureRmRouteConfigCommand

我一直试图在PowerShell中使用Route表,所以我想了解为什么这不起作用

1 个答案:

答案 0 :(得分:1)

之所以不起作用,是因为管道从左到右起作用,即命令的输出从左进给到右下一个。

对于您而言,您要先删除路线,然后再选择它。

尝试以下类似的代码(最后还要注意Set-AzureRmRouteTable,因为除非最后执行Set命令,否则将不会应用您的更改)

$rt = Get-AzureRmRouteTable -ResourceGroupName "your route table - resource group name"

Get-AzureRmRouteConfig -RouteTable $rt | where-object {$_.Name -like "*virginia*"} | ForEach-Object
 {Remove-AzureRmRouteConfig -RouteTable $rt -Name $_.Name | Set-AzureRmRouteTable}

您也可以在Microsoft文档上查看示例-https://docs.microsoft.com/en-us/powershell/module/azurerm.network/remove-azurermrouteconfig?view=azurermps-6.7.0

在第一个命令中,您首先获取路由,然后在路由顶部选择与模式/应用过滤器匹配的特定路由,以使其正常工作。

Get-AzureRmRouteConfig -RouteTable $rt | Where-Object {$_.Name -like "*virginia*"}

在第二个命令中,您尝试首先删除该路由,然后选择与顶部的模式/应用过滤器匹配的特定路由,因此该路由失败

Remove-AzureRmRouteConfig -RouteTable $rt | Where-Object {$_.Name -like "*virginia*"}