azure - Remove-AzureRmRouteConfig 不适用于 where-object 与 Get-AzureRmRouteConfig 一样
问题描述
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 处理路由表,所以我想了解为什么这不起作用
解决方案
它不工作的原因是因为管道从左到右工作,即从左边输出的命令馈送到右边的下一个。
在您的情况下,您尝试在选择路线之前删除路线。
尝试下面的代码(还要注意最后的 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*"}
推荐阅读
- c# - 将 DependencyProperty 实现到 TemplateBinding 时发生 XDG0008 错误
- ruby-on-rails - mongoid enum ArgumentError:参数数量错误(给定 1,预期 2..3)
- javascript - 我收到错误为 Uncaught TypeError: Cannot read property 'use' of undefined
- fortran - 使用 OMP 加速计算对称矩阵
- node.js - 创建要在 mongodb 中发送的数据时出现错误
- python - 如何从 HTML 源中找到结合了字母、符号和数字的标签?
- django - 在 Django Admin Detail 视图中显示 ManyToManyField
- python - 如何打开任何文本文件以在我用 python 制作的文本编辑器中打开,只需双击?
- fortran - 发送/接收 MPI 对的奇怪事件
- python - 使用 apis rest 框架在产品中设置类别