PowerShell でコマンド出力に新しい行を追加する方法

  1. PowerShell のコマンド出力に新しい行を追加するための`Nの使用
  2. PowerShell のコマンド出力に新しい行を追加するための出力フィールドセパレーターOFS の使用
  3. PowerShell のコマンド出力に新しい行を追加するための [Environment]::NewLine の使用
  4. PowerShell のコマンド出力に新しい行を追加するための Out-String の使用
  5. 結論
PowerShell でコマンド出力に新しい行を追加する方法

PowerShell には、出力内容をカスタマイズできる特殊文字列のセットが含まれています。これらの文字列は一般にエスケープシーケンスとして知られています。エスケープシーケンスはバックティック文字`で始まり、大文字と小文字を区別します。

エスケープシーケンスのいくつかの例には、`0, `a, `b, `e, `f`, `n, `rなどがあります。エスケープシーケンスは、ダブルクオーテーション" "で囲まれているときのみ解釈されます。

この記事では、PowerShell のコマンド出力に新しい行を追加するさまざまなテクニックを探ります。それぞれが目的の出力形式を達成するためのユニークなアプローチを提供し、PowerShell スクリプトの出力の外観に対する柔軟性と制御を提供します。

PowerShell のコマンド出力に新しい行を追加するための`Nの使用

エスケープシーケンス``n` は、PowerShell を含む多くのプログラミング言語で、新しい行文字を表すために一般的に使用されます。

文字列内で``n` に遭遇すると、それはテキストを表示するときにカーソルを次の行の先頭に移動するようインタプリタに指示します。

PowerShell では、バックティックが文字列内の特殊文字を示すためのエスケープ文字として使用されます。

Write-Host "This is line 1`nThis is line 2"

この例では、Write-Host コマンドレットを使用して 2 行のテキストを出力します。``n エスケープシーケンスを使用することで、“This is line 1”“This is line 2”`の間に新しい行を作成し、コンテンツの明確な区切りを実現しています。

出力:

PowerShell のコマンド出力に新しい行を追加する - 出力 1

複数の`n文字を使用して複数の行を追加できます。

Write-Host "This is line 1`nThis is line 2`n`n`This is line 3"

最初に"This is line 1"を出力し、次にバックティック(``n)を使って新しい行文字を追加します。これにより、PowerShell は次の行に移動するよう指示されます。次に、再度新しい行文字を使用して新しい行に“This is line 2”`を出力します。

その後、バックティックを使用して 2つの連続した新しい行文字(``n)を含め、“This is line 2”“This is line 3”の間に空白の行を作成します。最後に、“This is line 3”`を新しい行に出力します。

出力:

PowerShell でコマンド出力に新しい行を追加する - 出力 2

PowerShell のコマンド出力に新しい行を追加するための出力フィールドセパレーターOFS の使用

PowerShell では、出力フィールドセパレーター(OFS)は、配列の要素が文字列に変換されるときにどのように区切られるかを決定する特別な変数です。デフォルトでは、PowerShell は配列要素をスペースで区切ります。

ただし、OFS 変数の値を変更して、改行文字などの異なる区切り文字を指定することができます。それはエスケープシーケンスnで表されます。

まず、OFS 変数に区切り文字を定義する必要があります。

$OFS = "`n`n"
$color = 'red', 'blue', 'green', 'yellow'
"$($color)"

このコード例では、最初に OFS 変数を 2つの``nに設定し、出力内の要素を区切るために新しい行文字を使用することを示しています。次に、4つの色の文字列を含む$color` という名前の配列を定義します。

文字列補間構文"$($color)"を使用すると、PowerShell は配列を暗黙的に文字列に変換し、各要素を OFS の値で区切ることで、各色が二重の新しい行に表示されます。

出力:

PowerShell でコマンド出力に新しい行を追加する - 出力 3

PowerShell のコマンド出力に新しい行を追加するための [Environment]::NewLine の使用

PowerShell では、[Environment]::NewLine メソッドは、現在のオペレーティングシステム環境に適した新しい行文字列シーケンスを取得する便利な方法です。このメソッドは、新しい行シーケンス(Unix ベースのシステムでは\n、Windows ベースのシステムでは\r\n)を含む文字列を返します。

このメソッドを利用することで、PowerShell スクリプトは正しい新しい行文字を使用して出力を生成し、プラットフォームに依存せず、さまざまな環境で互換性があることを保証できます。

$color = 'red', 'blue', 'green', 'yellow'
$new = [Environment]::NewLine
$color | foreach { "$_$new" }

このコード例では、最初に 4つの色の文字列を含む $color という名前の配列を定義します。次に、[Environment]::NewLine を使用して新しい行文字シーケンスを取得し、$new 変数に保存します。

次に、$color 配列を Sort-Object にパイプして、色をアルファベット順にソートします。最後に、foreach を使用して各ソートされた色を反復処理し、各色を $new に保存されている新しい行文字と連結し、各色が新しい行に表示されるソートされた出力を得ます。

出力:

PowerShell でコマンド出力に新しい行を追加する - 出力 5

PowerShell のコマンド出力に新しい行を追加するための Out-String の使用

PowerShell では、Out-String コマンドレットは、入力オブジェクトを単一の文字列に変換し、コマンド出力をフォーマットするのに役立ちます。デフォルトでは、Out-String は各オブジェクトに新しい行文字(``n`)を付加するため、コマンド出力に新しい行を簡単に追加できます。

この方法は、出力内の各アイテムが別の行に表示されることを保証したい場合に特に便利であり、可読性と整理性を向上させます。

$color = 'red', 'blue', 'green', 'yellow'
$color | Out-String

このコードスニペットでは、最初に 4つの色の文字列を含む $color という名前の配列を定義します。次に、現在の環境に適した新しい行文字シーケンスを取得するために [Environment]::NewLine メソッドを使用し、$new 変数に保存します。

次に、foreach ループを使用して $color 配列内の各要素を反復処理します。ループ内では、新しい行文字が $new に保存されている各色の文字列を連結し、コマンド出力に各色が新しい行に表示されるようにします。

出力:

PowerShell でコマンド出力に新しい行を追加する - 出力 6

結論

PowerShell は、コマンド出力に新しい行を追加するためのいくつかの効果的な方法を提供し、可読性と整理性を向上させます。``nのようなエスケープシーケンスを使用したり、プラットフォームに依存しない新しい行文字のために[Environment]::NewLineメソッドを活用したり、配列出力フォーマットのためにOFS` 変数をカスタマイズしたりすることで、PowerShell はさまざまなスクリプティングニーズに対応する柔軟なソリューションを提供します。

これらのテクニックを理解し、実装することで、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