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表,所以我想了解为什么这不起作用
答案 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*"}