PowerShell のフィルターキーワード

関数は名前が付けられた PowerShell ステートメントのコレクションです。関数を実行するには、関数名を入力する必要があります。
関数内のステートメントは、関数を実行した後に実行されます。関数は呼び出す前に定義されていなければなりません。
フィルターは、filter
キーワードを使用する特別なタイプの関数です。このチュートリアルでは、PowerShell でフィルター関数を使用する方法を教えます。
PowerShell で filter
関数を使用する
filter
は、パイプライン内の各オブジェクトで実行される関数です。すべてのステートメントは、filter
関数のプロセスブロック内に含まれています。
通常、関数は Begin
または End
パラメーターを使用しますが、filter
関数はプロセスブロックのみを持っています。
構文:
filter [<scope:>]<name> { <statement list> }
filter
関数の主な目的は、パイプラインからの入力を処理することです。これにより、パイプライン入力の処理がより速く、効率的に行われます。
次の例では、パイプラインから 1,2,3
を入力として受け取り、全入力を表示します。
コマンド:
filter Input {
$_
}
1, 2, 3, 4, 5 | Input
自動変数 $_
は、パイプラインの入力オブジェクトをキャプチャするのに役立ちます。
出力:
1
2
3
4
5
フィルター関数で ForEach
ループを使用する必要はありません。なぜなら、ループ機能はすでに組み込まれているからです。
コマンド:
filter Input {
if ($_ -eq 2) {
$_
}
}
1, 2, 3, 4, 5 | Input
出力:
2
次の filter
関数は、パイプラインからファイルオブジェクトを取得し、それを出力に表示します。
コマンド:
filter Get-Files {
$_
}
Get-ChildItem C:\folder2 -Recurse -ErrorAction SilentlyContinue | Get-Files
上記のスクリプトでは、Get-Child
コマンドレットがディレクトリ C:\folder2
内のアイテムを再帰的に取得します。
出力:
Directory: C:\folder2
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/23/2022 11:39 PM New folder
-a---- 2/23/2022 10:29 PM 0 books.txt
-a---- 2/23/2022 10:29 PM 0 hello.txt
Directory: C:\folder2\New folder
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/23/2022 10:26 PM 0 cars.txt
この記事が、PowerShell でフィルター関数を使用する方法を理解するのに役立つことを願っています。詳細については、Windows PowerShell での関数の操作をお読みください。