我想实现一些通过名称过滤某些对象的自定义cmdlet,并且我希望使用通配符(Get-ChildItem和Get-Process)的通配符搜索。在PowerShell中过滤字符串
我该如何实现这种搜索?是否有一些例子,甚至是一些可重用的组件?任何例子?
我想实现一些通过名称过滤某些对象的自定义cmdlet,并且我希望使用通配符(Get-ChildItem和Get-Process)的通配符搜索。在PowerShell中过滤字符串
我该如何实现这种搜索?是否有一些例子,甚至是一些可重用的组件?任何例子?
您可以通过将一组对象集合到Where-Object(或简称?
)来定义自己的过滤器。
例如,如果你这样做gci
(GET-ChildItem的别名)获取文件对象的集合,你可以只显示做这个有文字log
在他们的:gci | ?{$_.name -match "log"}
。
大多数情况下,这些类型的cmdlet都利用了WildcardPattern class。
这里有一个如何直接使用它从PowerShell提示符的例子:
PS>$w = New-Object System.Management.Automation.WildcardPattern "*foo*"
PS>$w.IsMatch("foobar")
True
PS>$w.IsMatch("barbar")
False
感谢您的建议,但我想给cmdlet内实现它,因为我想过滤数据库中访问数据。 – fra 2012-04-23 13:24:10
某些cmdlet具有过滤器(gci-filter“query”),但过滤器基于提供程序(对于gci,它将是文件系统提供程序),实际上并未在cmdlet本身内定义。 – SpellingD 2012-04-23 14:24:54
谢谢,我会看看提供商的代码。 – fra 2012-04-24 05:57:45