我想实现一些按名称过滤某些对象的自定义cmdlet,我想使用支持通配符的搜索,例如常见的cmdlet(Get-ChildItem和Get-Process)。
如何实施此类搜索?是否有一些示例甚至是一些可重用的组件?有什么例子吗?
答案 0 :(得分:1)
在大多数情况下,这些类型的cmdlet利用WildcardPattern class。
以下是如何直接在PowerShell提示符下使用它的示例:
PS>$w = New-Object System.Management.Automation.WildcardPattern "*foo*"
PS>$w.IsMatch("foobar")
True
PS>$w.IsMatch("barbar")
False
答案 1 :(得分:0)
您可以通过将对象集合管道到Where-Object(或短格式?
)来定义自己的过滤器。
例如,如果通过执行gci
(Get-ChildItem的别名)获取文件对象的集合,则可以通过执行以下操作仅显示其中包含文本log
的文件对象: gci | ?{$_.name -match "log"}
。