2012-04-20 16 views
0

一部のオブジェクトを名前でフィルタリングするカスタムコマンドレットを実装したいと思います。一般的なコマンドレット(Get-ChildItemおよびGet-Process)のようなワイルドカード対応検索を使用したいと思います。PowerShellでの文字列のフィルタリング

このような検索はどのように実装できますか?いくつかの例や再利用可能なコンポーネントがありますか?どんな例?

答えて

0

オブジェクトのコレクションをWhere-Object(または短い形式?)にパイプすることで、独自のフィルタを定義できます。 gci | ?{$_.name -match "log"}:あなたはgci(のGet-ChildItemコマンドレットのエイリアス)を実行して、ファイルオブジェクトのコレクションを取得する場合

たとえば、あなたがこれを行うことによって、それらのテキストlogを持っているものだけを表示することができます。

+0

おかげで、私は、データベースにアクセスするデータをフィルタリングしたいと思いますので、私はコマンドレットの中にそれを実装したいと思います。 – fra

+0

一部のコマンドレットにはフィルタ(gci-filter "query")がありますが、フィルタはプロバイダに基づいています(gciの場合、ファイルシステムプロバイダとなります)。 – SpellingD

+0

ありがとう、私はプロバイダのコードを見ていきます。 – fra

1

ほとんどの場合、これらの種類のコマンドレットはWildcardPattern classを利用しています。

ここでPowerShellのプロンプトから直接それを使用する方法の例です:提案のための

PS>$w = New-Object System.Management.Automation.WildcardPattern "*foo*" 
PS>$w.IsMatch("foobar") 
True 
PS>$w.IsMatch("barbar") 
False 
関連する問題