我想實現一些通過名稱過濾某些對象的自定義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