关于语言关键字

简短说明

描述 PowerShell 脚本语言中的关键字。

详细说明

PowerShell 具有以下语言关键字。 有关详细信息,请参阅关键字 (keyword) 的 about 主题和表后的信息。

关键字 参考
开始 about_Functionsabout_Functions_Advanced
中断 about_Breakabout_Trap
捕获 about_Try_Catch_Finally
about_Classes
继续 about_Continueabout_Trap
数据 about_Data_Sections
定义 保留以供将来使用
about_Doabout_While
DynamicParam about_Functions_Advanced_Parameters
Else about_If
Elseif about_If
结束 about_Functionsabout_Functions_Advanced_Methods
枚举 about_Enum
退出 本主题中所述
筛选器 about_Functions
最终 about_Try_Catch_Finally
For about_For
ForEach about_ForEach
保留以供将来使用
函数 about_Functionsabout_Functions_Advanced
Hidden about_Hidden
如果 about_If
about_ForEach
Param about_Functions
进程 about_Functionsabout_Functions_Advanced
返回 about_Return
静态 about_Classes
Switch about_Switch
Throw about_Throwabout_Functions_Advanced_Methods
Trap about_Trapabout_Break、about_Try_Catch_Finally
尝试 about_Try_Catch_Finally
截止 about_Do
使用 about_Usingabout_Classes
Var 保留以供将来使用
While about_While、about_Do

语言关键字

开始

指定函数主体的一部分,以及 DynamicParamProcessEnd 关键字。 语句 Begin 列表在从管道接收任何对象之前运行一次。

语法:

function <name> {
    DynamicParam {<statement list>}
    begin {<statement list>}
    process {<statement list>}
    end {<statement list>}
}

中断

导致脚本退出循环。

语法:

while (<condition>) {
   <statements>
   ...

   break
   ...

   <statements>
}

捕获

指定在随附的 Try 语句列表中发生错误时要运行的语句列表。 错误类型需要括号。 第二对括号指示错误类型是可选的。

语法:

try {<statement list>}
catch [[<error type>]] {<statement list>}

在 PowerShell 中指定新类。

语法:

class <class-name> {
    [[hidden] [static] <property-definition> ...]
    [<class-name>([argument-list>]) {<constructor-statement-list>} ...]
    [[hidden] [static] <method-definition> ...]
}

继续

导致脚本停止运行循环并返回到条件。 如果满足条件,则脚本将再次开始循环。

语法:

while (<condition>) {
   <statements>
   ...

   continue
   ...

   <statements>
}

数据

在脚本中, 定义将数据与脚本逻辑隔离的部分。 还可以包含 If 语句和一些有限的命令。

语法:

data <variable> [-supportedCommand <cmdlet-name>] {<permitted content>}

WhileUntil 关键字 (keyword) 一起使用,作为循环构造。 PowerShell 至少运行一次语句列表,这与使用 While的循环不同。

While 的语法:

do {<statement list>} while (<condition>)

Until 的语法:

do {<statement list>} until (<condition>)

DynamicParam

指定函数主体的一部分,以及 BeginProcessEnd 关键字。 动态参数是在运行时添加的。

语法:

function <name> {
   DynamicParam {<statement list>}
   begin {<statement list>}
   process {<statement list>}
   end {<statement list>}
}

Else

If 关键字 (keyword) 一起使用以指定默认语句列表。

语法:

if (<condition>) {<statement list>}
else {<statement list>}

Elseif

IfElse 关键字一起使用以指定其他条件。 关键字 (keyword) Else 是可选的。

语法:

if (<condition>) {<statement list>}
elseif (<condition>) {<statement list>}
else {<statement list>}

结束

指定函数主体的一部分,以及 DynamicParamBeginEnd 关键字。 语句 End 列表在从管道收到所有对象后运行一次。

语法:

function <name> {
   DynamicParam {<statement list>}
   begin {<statement list>}
   process {<statement list>}
   end {<statement list>}
}

枚举

enum 用于声明枚举;由一组名为枚举器列表的命名标签组成的非重复类型。

语法:

enum <enum-name> {
    <label> [= <int-value>]
    ...
}

退出

导致 PowerShell 退出脚本或 PowerShell 实例。

语法:

exit
exit <exitcode>

与 File 参数一起使用pwsh时,.ps1 (脚本) 文件本身应包含有关处理脚本运行时发生的任何错误或异常的说明。 应仅使用 exit 语句来指示脚本的执行后状态。

在 Windows 上,允许 和 [int]::MaxValue 之间的[int]::MinValue任意数字。

在 Unix 上,只允许和 [byte]::MaxValue 之间的[byte]::MinValue正数。 通过加 256,范围中的-1-255负数会自动转换为正数。 例如, -2 转换为 254

在 PowerShell 中, exit 语句设置 变量的值 $LASTEXITCODE 。 在 Windows Command Shell (cmd.exe) 中,exit 语句设置环境变量的值 %ERRORLEVEL%

任何非数值或超出平台特定范围的参数将转换为 的值 0

在以下示例中,用户通过将 添加到 exit 4 脚本文件 test.ps1将错误级别变量值设置为 4。

C:\scripts\test>type test.ps1
1
2
3
exit 4

C:\scripts\test>pwsh -file ./test.ps1
1
2
3

C:\scripts\test>echo %ERRORLEVEL%
4

如果运行 pwsh.exe -File <path to a script> 并且脚本文件终止并带有 exit 命令,则退出代码将设置为与 命令一起使用的 exit 数值参数。 如果脚本没有 exit 语句,则当脚本完成且未出错或1脚本因未经处理的异常终止时,退出代码始终0为 。

筛选器

指定语句列表针对每个输入对象运行一次的函数。 它与仅包含 Process 块的函数具有相同的效果。

语法:

filter <name> {<statement list>}

最终

定义一个语句列表,该列表在与 Try 和 Catch 关联的语句之后运行。 Finally即使按 CTRL+C 退出脚本或在脚本中使用 Exit 关键字 (keyword) ,语句列表也会运行。

语法:

try {<statement list>}
catch [<error type>] {<statement list>}
finally {<statement list>}

For

使用条件定义循环。

语法:

for (<initialize>; <condition>; <iterate>) { <statement list> }

ForEach

使用集合的每个成员定义循环。

语法:

ForEach (<item> in <collection>) { <statement list> }

保留供将来使用。

函数

创建可重用代码的命名语句列表。 可以命名函数所属的范围。 并且,可以使用 关键字 (keyword) 指定一个或多个命名参数Param。 在函数语句列表中,可以包括 DynamicParamBeginProcessEnd 语句列表。

语法:

function [<scope:>]<name> {
   param ([type]<$pname1> [, [type]<$pname2>])
   DynamicParam {<statement list>}
   begin {<statement list>}
   process {<statement list>}
   end {<statement list>}
}

还可以选择在函数名称后面定义语句列表外的一个或多个参数。

语法:

function [<scope:>]<name> [([type]<$pname1>, [[type]<$pname2>])] {
   DynamicParam {<statement list>}
   begin {<statement list>}
   process {<statement list>}
   end {<statement list>}
}

如果

定义条件。

语法:

if (<condition>) {<statement list>}

Hidden

从 cmdlet 的默认结果 Get-Member 以及 IntelliSense 和 Tab 补全结果中隐藏类成员。

语法:

Hidden [data type] $member_name

在 语句中 ForEach 用于创建使用集合的每个成员的循环。

语法:

ForEach (<item> in <collection>){<statement list>}

InlineScript

在共享 PowerShell 会话中运行工作流命令。 此关键字 (keyword) 仅在 PowerShell 工作流中有效。

语法:

workflow <verb>-<noun>
{
   InlineScript
   {
      <Command/Expression>
      ...

   }
}

关键字 (keyword) InlineScript 指示一个InlineScript活动,该活动在共享标准 (非工作流) 会话中运行命令。 可以使用 InlineScript 关键字 (keyword) 运行工作流中无效的命令,以及运行共享数据的命令。 默认情况下,InlineScript 脚本块中的命令在单独的进程中运行。

有关详细信息,请参阅 在工作流中运行 PowerShell 命令

Param

定义函数中的参数。

语法:

function [<scope:>]<name> {
   param ([type]<$pname1>[, [[type]<$pname2>]])
   <statement list>
}

进程

指定函数主体的一部分,以及 DynamicParamBeginEnd 关键字。 Process当语句列表从管道接收输入时,Process语句列表针对管道中的每个元素运行一次。 如果管道未提供对象,则 Process 语句列表不会运行。 如果该命令是管道中的第一个命令,则 Process 语句列表运行一次。

语法:

function <name> {
   DynamicParam {<statement list>}
   begin {<statement list>}
   process {<statement list>}
   end {<statement list>}
}

返回

使 PowerShell 离开当前范围(如脚本或函数),并将可选表达式写入输出。

语法:

return [<expression>]

静态

指定所定义的属性或方法对于在其中定义的类的所有实例都是通用的。

有关用法示例,请参阅 Class

Switch

若要检查多个条件,请使用 Switch 语句。 语句 Switch 等效于一系列 If 语句,但更简单。

语句 Switch 列出了每个条件和一个可选操作。 如果条件获得,则执行操作。

语法 1:

switch [-regex|-wildcard|-exact][-casesensitive] ( <value> )
{
   <string>|<number>|<variable>|{ <expression> } {<statement list>}
   <string>|<number>|<variable>|{ <expression> } {<statement list>}
   ...

   default {<statement list>}
}

语法 2:

switch [-regex|-wildcard|-exact][-casesensitive] -file <filename>
{
   <string>|<number>|<variable>|{ <expression> } {<statement list>}
   <string>|<number>|<variable>|{ <expression> } {<statement list>}
   ...

   default {<statement list>}
}

Throw

将对象作为错误引发。

语法:

throw [<object>]

Trap

定义在遇到错误时要运行的语句列表。 错误类型需要括号。 第二对括号指示错误类型是可选的。

语法:

trap [[<error type>]] {<statement list>}

尝试

定义要在语句运行时检查错误的语句列表。 如果发生错误,PowerShell 将继续在 或 Finally 语句中Catch运行。 错误类型需要括号。 第二对括号指示错误类型是可选的。

语法:

try {<statement list>}
catch [[<error type>]] {<statement list>}
finally {<statement list>}

截止

在 语句中 Do 用作循环构造,其中语句列表至少执行一次。

语法:

do {<statement list>} until (<condition>)

使用

允许指示会话中使用的命名空间。 类和成员只需较少的键入即可提及它们。 还可以包含模块中的类。

语法 #1:

using namespace <.Net-framework-namespace>

语法 #2:

using module <module-name>

While

语句 while 是一个循环构造,其中条件在执行语句之前进行测试。 如果条件为 FALSE,则不执行语句。

语句语法:

while (<condition>) {
   <statements>
 }

在 语句中使用 Do 时, while 是循环构造的一部分,其中语句列表至少执行一次。

Do 循环语法:

do {<statement list>} while (<condition>)

另请参阅