about_Language_Keywords
应用到: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0
about_Language_Keywords
介绍 Windows PowerShell® 脚本语言中的关键字。
Windows PowerShell 具有以下语言关键字。有关详细信息,请参阅该表之后的关键字和信息的 about 主题。
Keyword Reference
------- ---------
Begin about_Functions, about_Functions_Advanced
Break about_Break, about_Trap
Catch about_Try_Catch_Finally
Continue about_Continue, about_Trap
Data about_Data_Sections
Do about_Do, about_While
DynamicParam about_Functions_Advanced_Parameters
Else about_If
Elseif about_If
End about_Functions, about_Functions_Advanced_Methods
Exit Described in this topic.
Filter about_Functions
Finally about_Try_Catch_Finally
For about_For
ForEach about_ForEach
From Reserved for future use.
Function about_Functions, about_Functions_Advanced
If about_If
In about_ForEach
InlineScript about_InlineScript
Parallel about_Parallel, about_ForEach-Parallel
Param about_Functions
Process about_Functions, about_Functions_Advanced
Return about_Return
Sequence about_Sequence
Switch about_Switch
Throw about_Throw, about_Functions_Advanced_Methods
Trap about_Trap, about_Break, about_Try_Catch_Finally
Try about_Try_Catch_Finally
Until about_Do
While about_While, about_Do
Workflow about_Workflows
Begin
-----
指定函数正文的一部分,以及 DynamicParam、Process 和 End 关键字。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>}
Continue
--------
导致脚本停止运行循环并返回到条件。如果满足条件,脚本将再次开始循环。
语法:
while (<condition>) {
<statements>
...
continue
...
<statements>
}
Data
----
在脚本中,定义将数据与脚本逻辑隔离的部分。还可以包含 If 语句和一些有限的命令。
语法:
data <variable> [-supportedCommand <cmdlet-name>] {<permitted content>}
Do
--
与 While 或 Until 关键字作为循环构造一起使用。和使用 While 的循环不同,Windows PowerShell 运行语句列表至少一次。
语法:
do {<statement list>} while (<condition>)
do {<statement list>} until (<condition>)
DynamicParam
------------
指定函数正文的一部分,以及 Begin、Process 和 End 关键字。动态参数在运行时添加。
语法:
function <name> {
DynamicParam {<statement list>}
begin {<statement list>}
process {<statement list>}
end {<statement list>}
}
Else
----
与 If 关键字一起使用以指定默认语句列表。
语法:
if (<condition>) {<statement list>}
else {<statement list>}
Elseif
------
与 If 和 Else 关键字一起使用以指定其他条件。Else 关键字是可选的。
语法:
if (<condition>) {<statement list>}
elseif (<condition>) {<statement list>}
else {<statement list>}
End
---
指定函数正文的一部分,以及 DynamicParam、Begin 和 End 关键字。End 语句列表在从管道中接收所有对象后运行一次。
语法:
function <name> {
DynamicParam {<statement list>}
begin {<statement list>}
process {<statement list>}
end {<statement list>}
}
Exit
----
导致 Windows PowerShell 退出脚本或 Windows PowerShell 实例。
当你运行“powershell.exe – File <path to a script>”时,你只能使用 exit 语句将 %ERRORLEVEL% 变量设置为零以外的值。在以下示例中,用户通过键入“exit 4”将错误级别变量值设置为 4。
C:\Users\bruce\documents\test>type test.ps1
1
2
3
exit 4
C:\Users\bruce\documents\test>powershell -file ./test.ps1
1
2
3
C:\Users\bruce\documents\test>echo %ERRORLEVEL%
4
当你使用带有 File 参数的 powershell.exe 时,.ps1(脚本)文件本身应包含用于处理在脚本运行时发生的任何错误或异常的说明。你应仅将 exit 语句用于指示脚本的执行后状态。
语法:
exit
exit <exit code>
Filter
------
指定语句列表将在其中针对每个输入对象运行一次的函数。它与仅包含 Process 块的函数效果相同。
语法:
filter <name> {<statement list>}
Finally
-------
定义在与 Try 和 Catch 相关联的语句后运行的语句列表。即使你按 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 关键字来指定一个或多个命名的参数。在函数语句列表中,你可以包含 DynamicParam、Begin、Process 和 End 语句列表。
语法:
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>}
In
--
在 ForEach 语句中使用,以创建使用集合中每个成员的循环。
语法:
ForEach (<item> in <collection>){<statement list>}
InlineScript
------------
在共享 Windows PowerShell 会话中运行工作流命令。此关键字仅在 Windows PowerShell 工作流中有效。
语法:
workflow <verb>-<noun>
{
InlineScript
{
<Command/Expression>
...
}
}
InlineScript 关键字指示 InlineScript 活动,该活动在共享标准(非工作流)会话中运行命令。你可以使用 InlineScript 关键字来运行本来在工作流中无效的命令,并运行可共享数据的命令。默认情况下,InlineScript 脚本块中的命令在单独的进程中运行。
有关详细信息,请参阅 about_InlineScript 和“在工作流中运行 Windows PowerShell”(https://technet.microsoft.com/library/jj574197.aspx)。
Param
-----
定义函数中的参数。
语法:
function [<scope:>]<name> {
param ([type]<$pname1>[, [[type]<$pname2>]])
<statement list>
}
Parallel
--------
按未定义的顺序同时运行工作流命令。此关键字仅在 Windows PowerShell 工作流中有效。
Parallel 关键字指示 Parallel 脚本块。Parallel 脚本块中的命令可按任意顺序同时运行。此功能显著提升了工作流的性能。
语法:
workflow <verb>-<noun>
{
Parallel
{
<Activity>
<Activity>
…
}
}
ForEach 关键字的 Parallel 参数可并行处理集合中的项。脚本块中的活动在每个项上按顺序运行,但是脚本块可同时在多个项上运行,并且以未定义的顺序处理这些项。
语法:
workflow <verb>-<noun>
{
ForEach -Parallel (<item> in <collection>)
{
<Activity>
<Activity>
...
}
}
有关详细信息,请参阅 about_Parallel、about_ForEach-Parallel
Process
-------
指定函数正文的一部分,以及 DynamicParam、Begin 和 End 关键字。当 Process 语句列表接收管道中的输入时,Process 语句列表将针对管道中的每个元素运行一次。如果管道不提供对象,则 Process 语句列表不会运行。如果该命令是管道中的第一个命令,则 Process 语句列表将运行一次。
语法:
function <name> {
DynamicParam {<statement list>}
begin {<statement list>}
process {<statement list>}
end {<statement list>}
}
Return
------
导致 Windows PowerShell 离开当前作用域(例如脚本或函数),并编写输出的可选表达式。
语法:
return [<expression>]
Sequence
--------
在 Parallel 脚本块中按顺序运行工作流命令。此关键字仅在 Windows PowerShell 工作流中有效。
语法:
workflow <verb>-<noun>
{
Parallel
{
Sequence
{
<Activity>
}
}
}
Sequence 关键字在 Parallel 脚本块内创建序列块。Sequence 脚本块中的命令按顺序和已定义的顺序运行。
有关详细信息,请参阅 about_Sequence
Switch
------
指定要对管道或文件中的项执行的各种操作。你可以使用以下语法模型之一。
语法 1:
switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline )
{
<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
---
定义要在语句运行时检查其中是否有错误的语句列表。如果出现错误,Windows PowerShell 将继续在 Catch 或 Finally 语句中运行。错误类型需要括号。第二对括号指示错误类型是可选的。
语法:
try {<statement list>}
catch [[<error type]] {<statement list>}
finally {<statement list>}
Until
-----
在 Do 语句中作为循环构造使用,其中至少运行一次该语句列表。
语法:
do {<statement list>} until (<condition>)
While
-----
在 Do 语句中作为循环构造使用,其中至少运行一次该语句列表。
语法:
do {<statement list>} while (<condition>)
Workflow
--------
创建基于脚本的 Windows PowerShell 工作流,即使用 Windows PowerShell 语言编写的工作流。
Windows PowerShell 工作流是 Windows PowerShell 命令类型,该类型受 Windows PowerShell 和 Windows Workflow Foundation 支持。工作流设计用于复杂、长时间运行且影响多台计算机的任务。如果工作流中断(例如由于网络故障),可以恢复它,并且你可以暂停和恢复它们而不会丢失状态或数据。
可以采用 XAML(Windows Workflow Foundatio 的本机语言)或 Windows PowerShell 语言编写工作流。
基于脚本的工作流的语法类似于函数的语法。但是,工作流中的执行单位是活动,而不是命令。在基于脚本的工作流中使用的 Cmdlet(和其他命令)隐式转换为活动。
脚本和函数中允许使用的某些语言元素在工作流不允许使用。同样,工作流可以包含在脚本和函数中找不到的元素,例如“暂留点”(检查点)、自暂停和并行处理。此外,所有工作流都具有一组在你使用 Workflow 关键字时由 Windows PowerShell 添加的常用参数。
语法:
workflow <Verb-Noun> {
param ([type]<$pname1> [, [type]<$pname2>])
<statement list>
}
workflow <verb-noun>
{
[CmdletBinding(<Attributes>)]
Param
(
[Parameter(<Arguments>)]
$Param1
)
<statement list>
}
有关详细信息,请参阅 TechNet 库中的 about_Workflows 和“Windows PowerShell 工作流入门”(https://go.microsoft.com/fwlink/?LinkID=252592)。
about_Escape_Characters
about_Special_Characters
about_Wildcards