Parser modes
The parser in PowerShell is responsible for taking what is typed into the console, or what is written in a script, and turning it into something PowerShell can execute. The parser has two different modes that explain, for instance, why strings assigned to variables must be quoted, but strings as arguments for parameters only need quoting if the string contains a space.
The parser modes are different modes:
- Argument mode
- Expression mode
Mode switching allows PowerShell to correctly interpret arguments without needing values to be quoted. In the following example, the argument for the Name
parameter only needs quoting if the name contains spaces:
Get-Process -Name pwsh
The parser is running in Argument mode at the point the pwsh
value is used and therefore literal text is treated as a value, not something to be executed.
This means that, in the following example, the second command is interpreted as a string and not executed...