共用方式為


about_Special_Characters

簡短描述

描述控制 PowerShell 如何解譯序列中下一個字元的特殊字元序列。

完整描述

PowerShell 支援一組特殊字元序列,用來代表不屬於標準字元集的字元。 序列通常稱為 逸出序列

逸出序列是以反引號字元開頭,稱為輔色 (ASCII 96) ,而且區分大小寫。 反引號字元也可以稱為 逸出字元

只有在雙引號 () " 字串中包含時,才會解譯逸出序列。

PowerShell 可辨識這些逸出序列:

順序 描述
`0 Null
`a 警示
`b 退格鍵
`e PowerShell 6) 中新增的逸出 (
`f 換頁字元
`n 新行
`r 歸位字元
`t 水平 Tab 鍵
`u{x} PowerShell 6) 中新增的 Unicode 逸出序列 (
`v 垂直 Tab 鍵

PowerShell 也有特殊的令牌,可標示您要停止剖析的位置。 此令牌後面的所有字元都會當做未解譯的常值使用。

特殊剖析權杖:

順序 描述
-- 將其餘值視為非參數的自變數
--% 停止剖析後續的任何專案
~ 波狀符號

Null ('0)

null (`0) 字元會顯示為 PowerShell 輸出中的空白空間。 此功能可讓您使用 PowerShell 來讀取及處理使用 Null 字元的文字檔,例如字串終止或記錄終止指標。 Null 特殊字元不等於 $null 變數,它會儲存 Null 值。

警示 (『a)

警示 () `a 字元會將擷取訊號傳送給計算機的喇叭。 您可以使用這個字元來警告使用者即將執行的動作。 下列範例會將兩個擷取訊號傳送至本機計算機的喇叭。

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

退格 ('b)

退格 (`b) 字元會將游標移回一個字元,但不會刪除任何字元。

此範例會寫入 文字備份 ,然後將游標移回兩次。 然後,在新的位置寫入空格,後面接著文字

"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 控制台每隔八個空格會有製表位。

本範例會在每個數據行之間插入兩個索引標籤。

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

unicode 字元 ('u{x})

注意

此特殊字元已新增至 PowerShell 6.0。

Unicode 逸出序列 (`u{x}) 可讓您依其字碼點的十六進位表示法指定任何 Unicode 字元。 這包括基本多語平面上方的 Unicode 字元 (>0xFFFF) ,其中包含 emoji 字元,例如 向上 (`u{1F44D}) 字元。 Unicode 逸出序列至少需要一個十六進位數位,且最多支援六個十六進位數位。 序列 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 殼層和公用程式規格中指定的慣例。

停止剖析令牌 (--%)

停止剖析 (--%) 標記可防止 PowerShell 將字串解譯為 PowerShell 命令和表示式。 這可讓這些字串傳遞至其他程式以進行解譯。

將停止剖析令牌放在程式名稱之後,以及可能造成錯誤的程式自變數之前。

在此範例中 Icacls ,此命令會使用停止剖析令牌。

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

PowerShell 會將下列字串傳送至 Icacls

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

在此第二個範例中,我們會將 變數 $HOME 傳遞至 cmd.exe /c echo 命令兩次。

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

輸出顯示 的第一個實體 $HOME 是由 PowerShell 解譯,以便將變數的值傳遞至 cmd。 的第二個實例 $HOME 會在停止剖析令牌之後,因此會以常值字串的形式傳遞。

C:\Users\username  $HOME

如需停止剖析令牌的詳細資訊,請參閱 about_Parsing

Tilde (~)

~ () 在PowerShell中具有特殊意義。 當它與路徑開頭的PowerShell命令搭配使用時,PowerShell會將波浪線字元展開至使用者的主目錄。 如果您在路徑中任何其他位置使用波浪字元,則會將其視為常值字元。

如需停止剖析令牌的詳細資訊,請參閱 about_Parsing

另請參閱