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

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 での関数の操作をお読みください。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website