about_Language_Keywords

简短说明

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

长说明

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

关键字 参考
begin about_Functionsabout_Functions_Advanced
break about_Breakabout_Trap
catch about_Try_Catch_Finally
class about_Classes
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 5.1 支持 PowerShell 工作流。 有关工作流的详细信息,请参阅在工作流中运行 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> ...]
}

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(脚本)文件本身应包含用于处理脚本运行时发生的任何错误或异常的说明。 应该仅使用 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 值。

在以下示例中,用户通过将 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 语句,则当脚本完成且未出错时,退出代码始终为 0;当脚本因未经处理的异常而终止时,退出代码始终为 1

filter

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

语法:

filter <name> {<statement list>}

finally

定义在与 trycatch 关联的语句之后运行的语句列表。 即使按 Ctrl+C 退出脚本或在脚本中使用 exit 关键字,finally 语句列表也会运行。

语法:

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 语句是一个循环构造,在执行语句之前先测试条件。 如果条件为 false,则不执行语句。

语句语法:

while (<condition>) {
   <statements>
 }

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

do 循环语法:

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

另请参阅