PowerShellには、関数とは別にパイプを通して受け取ったオブジェクトを処理するフィルタと呼ばれるものがあります。
書式は関数とほぼ一緒なのですが、functionの代わりにfilterキーワードを使用します。
filter <フィルタ名> (引数) {実行するスクリプト}
関数と同様、結果をreturnで返すことも可能です
唐突ですが、ここで問題です。
「現在稼働しているサービス一覧を取得してください」と言われたら皆さんならどうしますか?
答えは下記の通りです(一例です)
PS > Get-Service | Where { $_.Status -eq "Running" } Status Name DisplayName ------ ---- ----------- Running AeLookupSvc Application Experience Running AppHostSvc Application Host Helper Service Running AudioEndpointBu... Windows Audio Endpoint Builder Running Audiosrv Windows Audio Running BFE Base Filtering Engine : :長いので省略 :
Get-ServiceコマンドレットとWhereを使用してステータスが"Running"のものをフィルタしています。
この $_.Status -eq "Running" はフィルタ化することが可能です。
では、フィルタ名を StsRunning としてフィルタを作成してみましょう。
PS > filter StsRunning { >> if ( $_.Status -eq "Running" ) >> { >> return $_ >> } >> } >>
こうして作成したフィルタの使用方法は簡単で、パイプの後ろに記述するだけです。
PS > Get-Service | StsRunning Status Name DisplayName ------ ---- ----------- Running AeLookupSvc Application Experience Running AppHostSvc Application Host Helper Service Running AudioEndpointBu... Windows Audio Endpoint Builder Running Audiosrv Windows Audio Running BFE Base Filtering Engine
このように、よく使用するフィルタ条件は、専用のフィルタを作成しておくと便利です。
フィルタはコンソール上で作成すると、PowerShell終了時に消滅してしまうので、プロファイルに登録することをおすすめします。(「関数をプロファイルに追加する」をご参考ください)
最後に、関数とフィルタの違いについてですが
関数は、パイプで受け取ったオブジェクトを一度に処理する
フィルタは、パイプで受け取った個々のオブジェクトごとに実行する
という違いがあります。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail