about_Special_Characters

簡単な説明

PowerShell がシーケンス内の次の文字を解釈する方法を制御する特殊文字シーケンスについて説明します。

長い説明

PowerShell では、標準の文字セットに含まれない文字を表すために使用される一連の特殊文字シーケンスがサポートされています。 シーケンスは、一般的に エスケープ シーケンスと呼ばれます。

エスケープ シーケンスは、バックティック文字 (墓のアクセント (ASCII 96) と呼ばれます) で始まり、大文字と小文字が区別されます。 バックティック文字は 、エスケープ文字とも呼ばれます。

エスケープ シーケンスは、二重引用符 (") 文字列に含まれている場合にのみ解釈されます。

PowerShell では、次のエスケープ シーケンスが認識されます。

Sequence 説明
`0 [Null]
`a アラート:
`b バックスペース
`e エスケープ (PowerShell 6 で追加)
`f フォーム フィード
`n 改行
`r キャリッジ リターン
`t 水平タブ
`u{x} Unicode エスケープ シーケンス (PowerShell 6 で追加)
`v 垂直タブ

PowerShell には、解析を停止する場所をマークする特別なトークンもあります。 このトークンに続くすべての文字は、解釈されないリテラル値として使用されます。

特殊な解析トークン:

Sequence 説明
-- 残りの値をパラメーターではなく引数として扱う
--% 次の内容の解析を停止する

Null ('0)

Null (`0) 文字は、PowerShell 出力に空の領域として表示されます。 この機能を使用すると、PowerShell を使用して、文字列終了やレコード終了インジケーターなどの null 文字を使用するテキスト ファイルの読み取りと処理を行うことができます。 null 特殊文字は、null 値を$null格納する変数と同等ではありません。

アラート ('a)

アラート (`a) 文字は、コンピューターの話者にビープ音信号を送信します。 この文字を使用して、差し迫ったアクションについてユーザーに警告できます。 次の例では、2 つのビープ音信号をローカル コンピューターのスピーカーに送信します。

for ($i = 0; $i -le 1; $i++){"`a"}

Backspace ('b)

バックスペース (`b) 文字はカーソルを 1 文字戻しますが、文字は削除されません。

この例では、 バックアップ という単語を書き込み、カーソルを 2 回戻します。 次に、新しい位置にスペースを書き込み、続いて単語 out を書き込みます

"backup`b`b out"
back out

エスケープ ('e)

注意

この特殊文字は、PowerShell 6.0 で追加されました。

エスケープ (`e) 文字は、テキストの色や太字や下線などの他のテキスト属性を変更する仮想ターミナル シーケンス (ANSI エスケープ シーケンス) を指定するために最も一般的に使用されます。 これらのシーケンスは、カーソルの配置とスクロールにも使用できます。 PowerShell ホストは、仮想ターミナル シーケンスをサポートする必要があります。 ブール値 $Host.UI.SupportsVirtualTerminal を確認して、これらの ANSI シーケンスがサポートされているかどうかを確認できます。

ANSI エスケープ シーケンスの詳細については、 ANSI_escape_codeを参照してください。

次の例では、前景色が緑色のテキストを出力します。

$fgColor = 32 # green
"`e[${fgColor}mGreen text`e[0m"
Green text

フォーム フィード ('f)

フォーム フィード (`f) 文字は、現在のページを取り出し、次のページで印刷を続行する印刷命令です。 フォーム フィード文字は、印刷されたドキュメントにのみ影響します。 画面の出力には影響しません。

新しい行 ('n)

新しい行 (`n) 文字は、文字の直後に改行を挿入します。

この例では、新しい行文字を使用してコマンドに改行を作成する方法を Write-Host 示します。

"There are two line breaks to create a blank line`n`nbetween the words."
There are two line breaks to create a blank line

between the words.

キャリッジ リターン ('r)

復帰 (`r) 文字は、出力カーソルを現在の行の先頭に移動し、書き込みを続行します。 現在の行のすべての文字が上書きされます。

この例では、キャリッジ リターンの前のテキストが上書きされます。

Write-Host "These characters are overwritten.`rI want this text instead "

文字が削除されない前の `r テキストが上書きされていることに注意してください。

I want this text instead written.

水平タブ ('t)

水平タブ (`t) 文字は次のタブ位置に進み、その時点で書き続けます。 既定では、PowerShell コンソールには 8 番目のスペースごとにタブ位置があります。

次の使用例は、各列の間に 2 つのタブを挿入します。

"Column1`t`tColumn2`t`tColumn3"
Column1         Column2         Column3

Unicode 文字 ('u{x})

注意

この特殊文字は、PowerShell 6.0 で追加されました。

Unicode エスケープ シーケンス (`u{x}) を使用すると、コード ポイントの 16 進数表現で任意の Unicode 文字を指定できます。 これには、基本多言語平面 () の上の Unicode 文字が含まれます。これには、サムアップ (`u{1F44D}>0xFFFF) 文字などの絵文字文字が含まれます。 Unicode エスケープ シーケンスでは、少なくとも 1 つの 16 進数が必要であり、最大 6 桁の 16 進数がサポートされます。 シーケンスの最大 16 進値は .10FFFF

次の使用例は 、上矢印 (↕) 記号を出力します。

"`u{2195}"

垂直タブ ('v)

垂直タブ (`v) 文字は、次の垂直タブ位置に進み、その時点で残りの出力を書き込みます。 垂直タブのレンダリングは、デバイスと端末によって異なります。

Write-Host "There is a vertical tab`vbetween the words."

次の例は、一部の一般的な環境での垂直タブのレンダリングされた出力を示しています。

Windows コンソール ホスト アプリケーションは、余分なスペースが追加されていない特殊文字として (`v) を解釈します。

There is a vertical tab♂between the words.

Windows ターミナルは、垂直タブ文字を復帰と改行としてレンダリングします。 出力の残りの部分は、次の行の先頭に出力されます。

There is a vertical tab
between the words.

プリンターまたは UNIX ベースのコンソールでは、垂直タブ文字は次の行に進み、その時点で残りの出力を書き込みます。

There is a vertical tab
                       between the words.

パラメーターの終了トークン (--)

パラメーター終了トークン (--) は、それに続くすべての引数が実際の形式で渡されることを示します。これは、二重引用符が周囲に配置されたかのように渡されます。 たとえば、引用符を使用 -- したり、パラメーターとして解釈したりせずに文字列 -InputObject を出力できます。

Write-Output -- -InputObject
-InputObject

これは POSIX シェルおよびユーティリティー仕様で指定された規則です。

Stop-parsing トークン (--%)

停止解析 (--%) トークンを使用すると、PowerShell は文字列を PowerShell コマンドおよび式として解釈できなくなります。 これにより、これらの文字列を他のプログラムに渡して解釈できます。

プログラム名の後、およびエラーを引き起こす可能性のあるプログラム引数の前に、解析停止トークンを配置します。

この例では、コマンドは Icacls 停止解析トークンを使用します。

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

PowerShell から次の文字列が Icacls送信されます。

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

別の例を示します。 showArgs 関数は、渡された値を出力します。 この例では、関数に名前付きの $HOME 変数を 2 回渡します。

function showArgs {
  "`$args = " + ($args -join '|')
}

showArgs $HOME --% $HOME

出力では、最初のパラメーターに対して変数 $HOME が PowerShell によって解釈され、変数の値が関数に渡されることを確認できます。 2 つ目の $HOME 使用は、停止解析トークンの後に行われるので、文字列 "$HOME" が解釈されずに関数に渡されます。

$args = C:\Users\username|--%|$HOME

停止解析トークンの詳細については、「 about_Parsing」を参照してください。

こちらもご覧ください