コンテンツにスキップ

PowerShellでコマンドの途中で改行する方法

[質問]

PowerShellで、コマンドが長くなるとき、行の途中で改行して続行できますか

[回答] Gemini

はい、もちろんです!PowerShellで長いコマンドを途中で改行して読みやすくする方法は、主に3つあります。

状況に合わせて使い分けてみてください。


1. バックティック( `)を使う

最も一般的な方法です。行の末尾にバックティック(Shift + @ キーで入力できる「 ` 」記号)を置くと、「次の行に続きますよ」という合図になります。

Get-ChildItem -Path C:\Users\Documents `
             -Filter *.txt `
             -Recurse

注意点: バックティックの直後にスペースが入っていると、エラーになります。必ず「`」がその行の最後の文字になるようにしてください。


2. パイプ(|)の直後で改行する

コマンドをパイプで繋ぐ場合、パイプ記号のすぐ後ろであれば、バックティックなしでそのまま改行できます。PowerShellが「まだ続きがあるな」と自動で判断してくれるからです。

Get-Service |
    Where-Object { $_.Status -eq "Running" } |
    Sort-Object DisplayName

3. カンマや括弧の途中で改行する

配列のカンマ(,)や、メソッドの括弧(()、スクリプトブロックの波括弧({)の途中でも、自然に改行が可能です。

# 配列の例
$servers = "Server01",
           "Server02",
           "Server03"

# メソッドの例
[math]::Round(
    123.456,
    2
)

おすすめのテクニック:「スプラッティング」

もしパラメーターが非常に多くて読みづらい場合は、スプラッティング(Splatting)という手法が一番スマートです。ハッシュテーブル(連想配列)に引数をまとめて渡す方法です。

$params = @{
    Path    = "C:\Windows"
    Filter  = "*.log"
    Recurse = $true
    ErrorAction = "SilentlyContinue"
}

Get-ChildItem @params

※ 最後の実行時だけ、$ ではなく @ を使うのがポイントです。


書き方に迷っている具体的な長いコマンドはありますか?もしあれば、スプラッティング形式に書き換えるお手伝いもできますよ!