about_Parsing
適用於: Windows PowerShell 2.0, Windows PowerShell 3.0
主題
about_Parsing
簡短描述
描述 Windows PowerShell 如何剖析命令。
詳細描述
當您在在命令提示字元中輸入命令時,Windows PowerShell 會將命令文字分成一系列稱為「語彙基元」的區段,然後判斷如何解譯每個「語彙基元」。
例如,如果您輸入:
Write-Host book
Windows PowerShell 會將下列命令分成兩個語彙基元 "Write-Host" 和 "book",再獨立解譯每個語彙基元。
處理命令時,Windows PowerShell 剖析器是在運算式模式或在引數模式下運作:
- 在運算式模式下,字元字串值必須以引號括住。未以引號括住的數字會視為數值 (而不是一系列字元)。
- 在引數模式下,除非值的開頭為下列其中一個特殊字元,否則每個值都會視為一個可擴充字串:貨幣符號 ($)、@ 符號、單引號 (')、雙引號 (") 或左括弧 (()。
如果開頭為上述其中一個字元,則會將值視為值運算式。
下表提供在運算式模式和引數模式下處理的數個命令範例,以及這些命令所產生的結果。
Example Mode Result
------------------ ---------- ----------------
2+2 Expression 4 (integer)
Write-Output 2+2 Argument "2+2" (string)
Write-Output (2+2) Expression 4 (integer)
$a = 2+2 Expression $a = 4 (integer)
Write-Output $a Expression 4 (integer)
Write-Output $a/H Argument "4/H" (string)
每個語彙基元可以解譯為某種物件類型,例如布林值或字串。Windows PowerShell 會嘗試從運算式來判斷物件類型。物件類型取決於命令預期的參數類型,以及 Windows PowerShell 是否知道如何將引數轉換成正確的類型。下表顯示指派給運算式所傳回之值的數個類型範例。
Example Mode Result
------------------ ---------- ---------------
Write-Output !1 argument "!1" (string)
Write-Output (!1) expression False (Boolean)
Write-Output (2) expression 2 (integer)
停止剖析:--%
停止剖析符號 (--%) 是在 Windows PowerShell 3.0 中引進的,可指示 Windows PowerShell 避免將輸入解譯為 Windows PowerShell 命令或運算式。
在 Windows PowerShell 中呼叫可執行程式時,會將停止剖析符號放在程式引數之前。這個方法比使用逸出字元更容易防止誤譯。
遇到停止剖析符號時,Windows PowerShell 會將行中的其餘字元視為常值。唯一執行的解譯是以使用標準 Windows 標記法的環境變數來取代值,例如 %USERPROFILE%。
只有下一個新行字元或管線字元之前的停止剖析符號才有效。您無法使用接續字元 (') 來擴充其效果,或使用命令分隔符號 (;) 來終止其效果。
例如,下列命令會呼叫 Icacls 程式。
icacls X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
若要在 Windows PowerShell 2.0 中執行這個命令,您必須使用逸出字元來防止 Windows PowerShell 誤譯括弧。
icacls X:\VMS /grant Dom\HVAdmin:`(CI`)`(OI`)F
從 Windows PowerShell 3.0 開始,您可以使用停止剖析符號。
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
Windows PowerShell 可將下列命令字串傳送至 Icacls 程式:
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
另請參閱
about_Command_Syntax