我想实现一些按名称过滤某些对象的自定义 cmdlet,并且我想使用通配符启用搜索,例如常见 cmdlet(Get-ChildItem和Get-Process)。
我怎样才能实现这种搜索?是否有一些示例甚至一些可重用的组件?有什么例子吗?
我想实现一些按名称过滤某些对象的自定义 cmdlet,并且我想使用通配符启用搜索,例如常见 cmdlet(Get-ChildItem和Get-Process)。
我怎样才能实现这种搜索?是否有一些示例甚至一些可重用的组件?有什么例子吗?
大多数情况下,这些类型的 cmdlet 使用WildcardPattern 类。
下面是一个如何在 PowerShell 提示符下直接使用它的示例:
PS>$w = New-Object System.Management.Automation.WildcardPattern "*foo*"
PS>$w.IsMatch("foobar")
True
PS>$w.IsMatch("barbar")
False
您可以通过将对象集合传递给Where-Object(或缩写形式?
)来定义自己的过滤器。
例如,如果您通过执行gci
(Get-ChildItem 的别名)获取文件对象的集合,则可以通过执行以下操作仅显示其中包含文本log
的对象:gci | ?{$_.name -match "log"}
.