如何使用Where-Object/通配符匹配多个PowerShell命令字符串?
实现方案
有两种常用的实现方式,其中第一种直接调用Get-Command内置参数,执行效率更高,写法也更简洁:
方法1:使用内置参数过滤(推荐)
Get-Command原生支持-Verb和-Noun参数直接匹配规则,无需额外遍历过滤:
Get-Command -Verb Get,Set,ConvertTo -Noun C*,X*,V*
-Verb参数直接传入你需要匹配的三个动词列表,-Noun参数匹配C/X/V开头的名词即可。
方法2:沿用你当前的管道过滤写法
如果你要保留现在的管道过滤逻辑,把匹配运算符换成支持多规则的正则匹配-match即可:
# 和你原来的?别名写法兼容 Get-Command | ?{$_ -match '^(Get|Set|ConvertTo)-[CXV].*'}
如果不想用正则,也可以用通配符多条件拼接:
Get-Command | ?{$_ -like "Get-[CXV]*" -or $_ -like "Set-[CXV]*" -or $_ -like "ConvertTo-[CXV]*"}
提示:PowerShell的匹配默认不区分大小写,不需要额外处理动词大小写适配的问题。
内容的提问来源于stack exchange,提问作者EV20
相关产品推荐
相关产品推荐

