ja-JP/about_Splatting.help.txt

TOPIC
    about_Splatting

簡単な説明
    パラメータをまとめて変数に格納し、コマンドへ一括で渡す
    「スプラッティング」を説明します。(PSHelpJaJP 日本語パッチ版)

詳細な説明
    スプラッティングは、コマンドのパラメータをハッシュテーブルまたは配列に
    まとめ、@ 記号付きの変数で一括展開して渡す手法です。コマンド呼び出しが
    長くなるのを防ぎ、再利用しやすくなります。

    変数の参照に $ ではなく @ を使う点がポイントです。

ハッシュテーブルによるスプラッティング(名前付きパラメータ)

    名前付きパラメータを渡す場合はハッシュテーブルを使います。
    キーがパラメータ名、値がその引数になります。

        $params = @{
            Path = "C:\Logs"
            Filter = "*.log"
            Recurse = $true
        }
        Get-ChildItem @params

    上は次の呼び出しと同じです。

        Get-ChildItem -Path "C:\Logs" -Filter "*.log" -Recurse

配列によるスプラッティング(位置パラメータ)

    位置パラメータを渡す場合は配列を使います。

        $args = "C:\src\a.txt", "C:\dst\a.txt"
        Copy-Item @args
        # Copy-Item "C:\src\a.txt" "C:\dst\a.txt" と同じ

スイッチパラメータの扱い

    -Recurse のようなスイッチは、ハッシュテーブルで $true / $false を指定して
    オン・オフを制御できます。条件によって付け外ししたいときに便利です。

        $opt = @{ Recurse = $shouldRecurse } # $true なら有効、$false なら無効
        Get-ChildItem C:\Logs @opt

注意

    - @ で展開するため、コード内では @params のように記述します
      ($params ではありません)。
    - 通常のパラメータとスプラッティングは併用できます。
        Get-ChildItem @params -Force

関連項目
    about_Functions
    about_Parameters
    about_Hash_Tables