在PowerShell中过滤字符串

时间:2012-04-20 08:07:23

标签: powershell cmdlets

我想实现一些按名称过滤某些对象的自定义cmdlet,我想使用支持通配符的搜索,例如常见的cmdlet(Get-ChildItemGet-Process)。

如何实施此类搜索?是否有一些示例甚至是一些可重用的组件?有什么例子吗?

2 个答案:

答案 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"}