通过


about_Language_Keywords

简短说明

介绍 PowerShell 脚本语言中的关键字。

详细说明

PowerShell 具有以下语言关键字。 有关详细信息,请参阅有关关键字的主题以及表后面的信息。

关键词 参考
begin about_Functionsabout_Functions_Advanced
break about_Breakabout_Trap
catch about_Try_Catch_Finally
class about_Classes
clean about_Functionsabout_Functions_Advanced_Methods
continue about_Continueabout_Trap
data about_Data_Sections
define 保留以供将来使用
do about_Doabout_While
dynamicparam about_Functions_Advanced_Parameters
else about_If
elseif about_If
end about_Functionsabout_Functions_Advanced_Methods
enum about_Enum
exit 如本主题中所述
filter about_Functions
finally about_Try_Catch_Finally
for about_For
foreach about_Foreach
from 保留以供将来使用
function about_Functionsabout_Functions_Advanced
hidden about_Hidden
if about_If
in about_Foreach
param about_Functions
process about_Functionsabout_Functions_Advanced
return about_Return
static about_Classes
switch about_Switch
throw about_Throwabout_Functions_Advanced_Methods
trap about_Trapabout_Breakabout_Try_Catch_Finally
try about_Try_Catch_Finally
until about_Do
using about_Usingabout_Classes
var 保留以供将来使用
while about_Whileabout_Do

PowerShell 工作流使用以下关键字:

  • inlinescript
  • parallel
  • sequence
  • workflow

PowerShell 工作流仅在 PowerShell 5.1 中受支持。 有关工作流的详细信息,请参阅 在工作流中运行 PowerShell 命令。

begin

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

语法:

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

break

导致脚本退出循环。

语法:

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

   break
   ...

   <statements>
}

catch

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

语法:

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

class

在 PowerShell 中指定一个新类。

语法:

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

clean

PowerShell 7.3 中添加了 clean 关键字。 关键字定义一个代码块,该代码块保证在函数的 beginprocessend 块之后运行。 与 end 块不同,即使其他一个块中存在终止错误,也会始终执行 clean 块。

continue

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

语法:

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

   continue
   ...

   <statements>
}

data

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

语法:

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

do

与作为循环构造的 whileuntil 关键字一起使用。 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 关键字一起使用以指定默认语句列表。

语法:

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

elseif

ifelse 关键字一起使用以指定其他条件。 else 关键字是可选的。

语法:

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

end

指定函数正文的一部分,以及 dynamicparambeginend 关键字。 从管道接收所有对象后,end 语句列表将运行一次。

语法:

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

enum

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

语法:

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

exit

使 PowerShell 退出脚本或 PowerShell 实例。

语法:

exit
exit <exitcode>

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

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

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

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

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

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

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 语句,那么当脚本无错误完成时,退出代码始终为 0,而当脚本由于未处理的异常终止时,退出代码为 1

filter

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

语法:

filter <name> {<statement list>}

finally

定义在与 trycatch关联的语句之后运行的语句列表。 即使您按下控制键finally+ 退出脚本,或者在脚本中使用关键字,exit语句列表仍会运行。

语法:

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> }

from

保留以供将来使用。

function

创建可重用代码的命名语句列表。 可以命名函数所属的范围。 还可以使用 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

定义条件。

语法:

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

hidden

对类成员隐藏 Get-Member cmdlet、IntelliSense 和 Tab 键自动补全默认结果。

语法:

hidden [data type] $member_name

in

foreach 语句中用于创建一个循环,该循环使用集合的每个成员。

语法:

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

param

定义函数中的参数。

语法:

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

process

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

语法:

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

return

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

语法:

return [<expression>]

static

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

有关用法示例,请参阅 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>}

try

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

语法:

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

until

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

语法:

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

using

允许你指示会话中使用的命名空间。 类型名称、类和成员需要更少的键入才能引用它们。 还可以包含模块中的类。

命名空间语法:

using namespace <.NET-namespace>

模块语法:

using module <module-name>

程序集语法:

using assembly <.NET-assembly-path>

有关详细信息,请参阅 about_Using

while

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

语句语法:

while (<condition>) {
   <statements>
 }

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

do 循环语法:

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

另请参阅