about_Parsing

適用於: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.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