次の方法で共有


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 文字戻しますが、文字は削除されません。

この例では、 backup という単語を書き込み、カーソルを 2 回戻します。 次に、新しい位置にスペースを書き込み、その後に単語 out を書き込 みます

"backup`b`b out"
back out

エスケープ ('e)

注意

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

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

ANSI エスケープ シーケンスについて詳しくは、Wikipedia の ANSI エスケープ コードに関する記事を参照してください。

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

$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.

行の連結

バックティック文字は、コマンドが次の行に進むという PowerShell パーサーへのシグナルとして、行の末尾で使用することもできます。 詳細については、「 about_Parsing」を参照してください。

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

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

Write-Output -- -InputObject
-InputObject

これは、POSIX シェルとユーティリティの仕様で指定されている規則です。

Stop-parsing token (--%)

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

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

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

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

PowerShell は、次の文字列を に送信します Icacls

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

この 2 番目の例では、 変数 $HOME をコマンドに cmd.exe /c echo 2 回渡します。

cmd.exe /c echo $HOME --% $HOME

出力は、 の最初の $HOME インスタンスが PowerShell によって解釈され、変数の値が に cmd渡されることを示しています。 の 2 番目の $HOME インスタンスは、停止解析トークンの後に来るので、リテラル文字列として渡されます。

C:\Users\username  $HOME

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

チルダ (~)

チルダ文字 (~) は、PowerShell で特別な意味を持ちます。 パスの先頭にある PowerShell コマンドで使用すると、PowerShell はチルダ文字をユーザーのホーム ディレクトリに展開します。 パス内の他の場所でチルダ文字を使用すると、リテラル文字として扱われます。

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

こちらもご覧ください