共用方式為


關於剖析

簡短描述

說明 PowerShell 如何剖析命令。

詳細描述

當您在命令提示字元中輸入命令時,PowerShell 會將命令文字分成一系列稱為「權杖」的區段,然後決定如何解讀每個「權杖」。

例如,如果您輸入:

撰寫主機書籍

PowerShell 會將下列命令分成兩個權杖:「寫入主機」和「書籍」,並獨立解釋每個權杖。

在處理命令時,PowerShell 剖析器會以運算式模式或引數模式運作:

  • 在運算式模式中,字元字串值必須包含在引號中。 不是以引號括住的數位會視為數值(而不是一系列的字元)。

  • 在引數模式中,系統會將每個值視為可擴充的字串,除非它是以下列其中一個特殊字元開頭:貨幣符號( $ )、@ 符號、單引號( ' )、雙引號( " )或左括弧( ( )。

如果前面加上其中一個字元,則會將值視為值運算式。

下表提供數個以運算式模式和引數模式處理的命令範例,以及這些命令所產生的結果。

範例 [模式] 結果
2 + 2 運算是 4(整數)
寫入-輸出 2 + 2 引數 "2 + 2" (字串)
寫入-輸出(2 + 2) 運算是 4(整數)
$a = 2 + 2 運算是 $a = 4 (整數)
$a 的寫入輸出 運算是 4(整數)
寫入-輸出 $a/H 引數 "4/H" (字串)

每個標記都可以解讀為某種類型的物件類型,例如布林值或字串。 PowerShell 會嘗試從運算式判斷物件類型。 物件類型取決於命令所預期的參數類型,以及 PowerShell 是否知道如何將引數轉換成正確的類型。 下表顯示指派給運算式所傳回之值的幾個類型範例。

範例 [模式] 結果
寫入-輸出!1 引數 "! 1" (字串)
寫入-輸出(!1) expression False (布林值)
寫入-輸出(2) expression 2(整數)

PowerShell 3.0 中引進的停止剖析符號(--%)會指示 PowerShell 避免將輸入解讀為 PowerShell 命令或運算式。

在 PowerShell 中呼叫可執行程式時,請將停止剖析符號放在程式引數之前。 這項技術比使用 escape 字元來避免被解釋更容易。

當它遇到停止剖析符號時,PowerShell 會將該行中的其餘字元視為常值。 它所執行的唯一轉譯是取代使用標準 Windows 標記法(例如% USERPROFILE%)之環境變數的值。

停止剖析符號只有在下一個分行符號或管線字元之後才有效。 您不能使用接續字元(')來擴充其效果,或使用命令分隔符號(;)以終止其效果。

例如,下列命令會呼叫 Icacls 程式。

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

若要在 PowerShell 2.0 中執行此命令,您必須使用 escape 字元來防止 PowerShell 錯誤解譯括弧。

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

從 PowerShell 3.0 開始,您可以使用停止剖析符號。

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

PowerShell 會將下列命令字串傳送至 Icacls 程式:

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

另請參閱

about_Command_Syntax