I would like to implement some custom cmdlets that filter some object by name, and I would like to use wild-card enabled search like for common cmdlets (Get-ChildItem and Get-Process).
How can I implement this kind of search? Are there some examples or even some reusable components? Any examples?
For the most part, these types of cmdlets leverage the WildcardPattern class.
Here's an example of how to use it directly from the PowerShell prompt:
PS>$w = New-Object System.Management.Automation.WildcardPattern "*foo*"
PS>$w.IsMatch("foobar")
True
PS>$w.IsMatch("barbar")
False
You can define your own filter by piping a collection of objects to Where-Object (or the short-form ?
).
For example, if you get a collection of file objects by doing gci
(alias of Get-ChildItem), you can display only the ones that have the text log
in them by doing this: gci | ?{$_.name -match "log"}
.