PowerShell Where-Object用方括号[]无法正常工作

膨胀

我正在尝试使用PowerShell根据关键字匹配“ [X]”(实际上是一个用方括号括起来的X)过滤出结果(行)

Invoke-Command -ComputerName Server1 -ScriptBlock {Get-WindowsFeature} | Where-Object {$_.DisplayName -like "*[X]*"}

结果大于预期。我正在挑选包含[,]和X的任何顺序或组合的结果。只要所有字符都在行上即可。我正在使用-like,它不使用正则表达式。我认为这是-match的工作。删除通配符无济于事。

在任何人问之前,我为什么不过滤'installstate'属性。这是一个较旧的PowerShell模块,可以远程运行,并且似乎根本不返回该属性,因此我别无选择,只能寻找一个明确的“ [X]”,谢谢

Mathias R. Jessen

这里有两个问题:

如何过滤包含的字符串 [X]

如注释中所述,PowerShell中的通配符模式[]用于特殊目的(描述字符范围),因此您需要使用反引号将方括号转义:

PS ~> 'This string contains [X] somewhere' -like '*`[X`]*'
True

注意,反引号也是可扩展字符串中使用的转义字符,因此,如果使用双引号,则需要对括号进行两次转义:

PS ~> 'This string contains [X] somewhere' -like "*``[X``]*"
True

或者,选择更简单的方法,例如好旧的方法String.Contains()

'This string contains [X] somewhere'.Contains('[X]')

...或要求PowerShell为您转义参考字符串:

'This string contains [X] somewhere' -like "*$([WildcardPattern]::Escape('[X]'))*"

如何过滤来自的输出 Get-WindowsFeature

它不起作用的原因是漂亮的树状缩进和[X]/[ ]指示符实际上不是输出对象的一部分-它是由PowerShell的格式子系统强加的,并且仅在其输出作为格式表列出时出现。

由于[X]表示该组件已“安装”,因此对基础数据的等效查询实际上是:

Invoke-Command -ComputerName Server1 -ScriptBlock {
    Get-WindowsFeature
} | Where-Object {$_.InstallState -eq "Installed"}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell Where-Object -in子句

来自分类Dev

Where-Object 优化 Powershell

来自分类Dev

无法应用Where-Object的Powershell过滤

来自分类Dev

PowerShell Where-Object查询括号之间的空或NULL内容

来自分类Dev

使用Powershell Where-Object过滤xml

来自分类Dev

Powershell使用Where-Object获取内容

来自分类Dev

Powershell Where-Object排除结果

来自分类Dev

Powershell where-object 返回码

来自分类Dev

带方括号的PowerShell

来自分类Dev

PowerShell:FileSystemWatcher无法正常工作

来自分类Dev

Powershell PSSession无法正常工作

来自分类Dev

Powershell添加无法正常工作

来自分类Dev

Powershell 的解析无法正常工作

来自分类Dev

Powershell中的where对象

来自分类Dev

Get-ChildItem传递Powershell中的Where-Object失败?

来自分类Dev

在Powershell中使用“ Where-Object”过滤输出

来自分类Dev

PowerShell Where-Object-如何对条件进行分组

来自分类Dev

在where-object子句中的Powershell计算值

来自分类Dev

Powershell-从数组中获取值-Where-Object

来自分类Dev

PowerShell Where-Object-如何对条件进行分组

来自分类Dev

Powershell Where-Object cmdlet 中的变量扩展

来自分类Dev

在 PowerShell 中对对象使用 Where-Object

来自分类Dev

在PowerShell中作为工作流运行时,where-Object子句失败

来自分类Dev

7Zip Powershell无法正常工作

来自分类Dev

使用-NoExit启动PowerShell无法正常工作

来自分类Dev

Powershell ElasticSearch无法正常工作,缺少scrollId

来自分类Dev

Powershell脚本的输出无法正常工作?

来自分类Dev

Powershell脚本无法正常工作

来自分类Dev

Laravel MySQL where封闭无法正常工作