TOPIC about_parsing SHORT DESCRIPTION Describes how Windows PowerShell parses commands. LONG DESCRIPTION When you enter a command at the command prompt, Windows PowerShell breaks the command text into a series of segments called tokens and then determines how to interpret each one. For example, Windows PowerShell breaks the following command into two tokens, "Write-Host" and "book", and interprets each token separately: Write-Host book When processing a command, the Windows PowerShell parser operates in expression mode or in argument mode: - In expression mode, character string values must be contained in quotation marks. Numbers not enclosed in quotation marks are treated as numerical values (rather than as a series of characters). - In argument mode, each value is treated as an expandable string unless it begins with one of the following special characters: dollar sign ($), at sign (@), single quotation mark ('), double quotation mark ("), or an opening parenthesis ((). If preceded by one of these characters, the value is treated as a value expression. The following table provides several examples of commands processed in expression mode and argument mode and the results produced by those commands. 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) Every token can be interpreted as some kind of object type, such as Boolean or string. Windows PowerShell attempts to determine the object type from the expression. The object type depends on the type of parameter a command expects and on whether Windows PowerShell knows how to convert the argument to the correct type. The following table shows several examples of the types assigned to values returned by the expressions. Example Mode Result ------------------ ---------- --------------- Write-Output !1 argument "!1" (string) Write-Output (!1) expression False (Boolean) Write-Output (2) expression 2 (integer) SEE ALSO about_Command_Syntax