【发布时间】:2021-02-10 10:25:10
【问题描述】:
我正在尝试使用 PowerShell 根据关键字匹配“[X]”(字面意思是用方括号括起来的 X)过滤掉结果(行)
Invoke-Command -ComputerName Server1 -ScriptBlock {Get-WindowsFeature} | Where-Object {$_.DisplayName -like "*[X]*"}
结果比预期的要大。我正在以任何顺序或组合选择包含 [、] 和 X 的结果。只要所有字符都在线。我正在使用不使用正则表达式的 -like 。我认为那是-match 的工作。删除通配符没有帮助。
在有人问之前,我为什么不过滤“installstate”属性。这是一个远程运行的旧 PowerShell 模块,似乎根本没有返回该属性,因此我别无选择,只能寻找一个明确的“[X]” 谢谢
【问题讨论】:
-
-like进行通配符模式比较,而[X]是一个特殊序列 - 更改为-like '*`[X`]*'以查找文字字符串[X] -
谢谢,在看到你的评论之前我刚刚做了什么。但还是不行。这个根本不返回任何结果。谷歌揭示了 PowerShell 和方括号的各种怪癖。
-
请注意我使用的是单引号 - 如果你使用双引号,你需要双转义:
-like "*``[X``]*" -
确实注意到了。只是尝试用双引号来解决它,没有结果。
标签: powershell wildcard