语法

 

适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2007-02-08

本主题介绍如何理解 Exchange 帮助文档中的 Exchange 命令行管理程序参数集和示例以及如何将命令设置为 Exchange 命令行管理程序可处理的格式。在 Exchange 命令行管理程序中,参数集显示在 cmdlet 帮助主题的“用法”部分。在 Microsoft Exchange Server 2007 帮助文件中,参数集显示在 cmdlet 帮助主题的“语法”部分。

有关 cmdlet 帮助的详细信息,请参阅获取帮助

Exchange 命令行管理程序中的命令约定

Exchange 命令行管理程序遵守几项命令约定,可以帮助您了解信息在运行命令时是必需的还是可选的以及如何提供参数及其值。有关如何在 Exchange 命令行管理程序帮助和 Exchange 2007 帮助文件中显示参数集的示例,请参阅本主题后面的“参数集”部分。

表 1 列出了这些命令约定。

表 1   Exchange 命令行管理程序的命令约定

符号 说明

-

连字符表示命令行中的下一个单词是一个参数。最常用的参数是 Identity。有关参数的详细信息,请参阅参数

< >

尖括号用于括起参数值。这些值可以是选择或名称。例如,在 -Parameter1 <1 | 2 | 3> 中,数字代表具体值的选择。在 -Parameter2 <ServerName> 中,ServerName 代表实际值。

[ ]

方括号用于括起可选参数及其值。未括在方括号中的参数及其值是必需的。

|

如果在参数值列表中使用竖线符号(例如 -Parameter1 <1 | 2 | 3>),则表示在可用值之间选择。此约定适用于 System.Enum 参数和 System.Boolean 参数。

这些命令约定可以帮助您了解命令的构成。在命令行中输入命令时不必键入这些约定。

参数集

在 Exchange 帮助文档中,所有 cmdlet 均在参数集中显示其关联的参数。参数集是可以一起使用的参数组。如果参数在一个参数集中存在,但是在另一个参数集中不存在,则这些参数是互斥的。这些参数不能一起使用。

尽管所有 cmdlet 都有参数值,但是许多 cmdlet 只有一个参数集。这意味着该 cmdlet 的所有参数可以一起使用。有些 cmdlet 可能有多个参数集。以下示例显示 New-SystemMessage cmdlet 可以使用的参数集:

New-SystemMessage -DsnCode <EnhancedStatusCode> -Internal <$true | $false>
-Language <CultureInfo> -Text <String> [-DomainController <String>] [-Templ
ateInstance <MshObject>]

New-SystemMessage -Language <CultureInfo> -QuotaMessageType <WarningMailbox
UnlimitedSize | WarningPublicFolderUnlimitedSize | WarningMailbox | Warning
PublicFolder | ProhibitSendMailbox | ProhibitPostPublicFolder | ProhibitSen
dReceiveMailBox> -Text <String> [-DomainController <String>] [-TemplateInst
ance <MshObject>]

New-SystemMessage cmdlet 有两个参数集。第一个参数集包含 DsnCode 参数和 Internal 参数,第二个参数集包含 QuotaMessageType 参数。这意味着 DsnCode 参数和 Internal 参数可以一起使用。但是不能与 QuotaMessageType 参数一起使用。其他参数 LanguageTextDomainControllerTemplateInstance 在两个参数集中均列出。这意味着这些参数可以与 DsnCode 参数和 Internal 参数一起使用,也可以与 QuotaMessageType 参数一起使用。

参数集可能表示一个 cmdlet 可以有多种用途。例如,可以使用 New-SystemMessage cmdlet 配置自定义发送状态通知 (DSN) 邮件或配置自定义邮箱配额限制邮件。但是,cmdlet 有多个参数集通常是因为一个参数执行的功能可能与另一个参数不兼容。例如,以下示例显示 New-AddressList cmdlet 的参数集:

New-AddressList -Name <String> [-Company <MultiValuedProperty>] [-Container
 <AddressListIdParameter>] [-Department <MultiValuedProperty>] [-DisplayNam
e <String>] [-DomainController <String>] [-IncludedRecipients <Nullable>] [
-StateOrProvince <MultiValuedProperty>] [-TemplateInstance <MshObject>]

New-AddressList -Name <String> [-Container <AddressListIdParameter>] [-Disp
layName <String>] [-DomainController <String>] [-RecipientFilter <String>]
[-TemplateInstance <MshObject>] 

New-AddressList cmdlet 中,第一个参数集列出的参数可以根据为 CompanyDepartmentIncludedRecipientsStateOrProvice 参数提供的值新建地址列表。但是,也可以使用通过 RecipientFilter 参数指定的自定义筛选器来新建地址列表。在新建地址列表时,使用 RecipientFilter 参数指定的自定义筛选器优先于使用第一个参数集中的参数配置的任何设置。因此,将 RecipientFilter 参数放入其自己的参数集中。Exchange 2007 不允许在一个命令行中同时指定上述两个参数。与 New-SystemMessage cmdlet 相同,New-AddressList cmdlet 的两个参数集中的其他参数可以任意组合使用。

引号的用法

最常用的情况是,在将某个包含空格的值传递给参数时为该值加上双引号 ( " )。例如,如果希望将 Contoso Receive Connector 传递给 Set-ReceiveConnector cmdlet 的 Name 参数,则必须为 Contoso Receive Connector 加上双引号,如下例所示:

Set-ReceiveConnector -Name "Contoso Receive Connector"

如果不为该字符串加上双引号,Exchange 命令行管理程序会尝试将该字符串中的每个单词解释为命令行的新参数并显示错误消息。

在 Exchange 命令行管理程序中,双引号和单引号 ( ' ) 的含义不同。如果为字符串加上双引号,Exchange 命令行管理程序会将任何变量替换为匹配的值。例如,假定将值 ServerName 赋给变量 $Server。然后,假定在命令行中输入以下命令:

"$Server Example"

将显示以下输出:

ServerName Example

在输出中,变量 $Server 被替换值 ServerName

如果为字符串加上单引号,Exchange 命令行管理程序不会尝试将变量替换为匹配的值。假定仍将值 ServerName 赋给变量 $Server 。然后,假定在命令行中输入以下命令:

'$Server-Example'

将显示以下输出:

$Server-Example

由于 Exchange 命令行管理程序不会解释单引号包含的文本中的变量,所以,变量 $Server 未被替换为值。

有关变量的详细信息,请参阅用户定义的变量外壳程序变量

您可能还希望显示一些字符,例如美元符号 ( )、双引号、单引号或反引号 ( )。在 Exchange 命令行管理程序中使用这些字符时,这些字符具有特殊的含义。在双引号包含的字符串中包含这些字符时,若要指示 Exchange 命令行管理程序不解释这些字符并显示这些字符,必须使用反引号转义字符 ( ` )。例如,尝试在命令行中键入以下文本:

"The price is `$23."

将显示以下输出:

The price is $23.

由于对美元符号 ( ) 使用了反引号转义字符,所以,Exchange 命令行管理程序不会将 $ 解释为变量开头。

如果为字符串加上单引号,除非您希望显示字符串中的单引号,否则,不必转义任何字符。如果希望显示单引号包含的字符串中的单引号,则必须使用两个单引号 ( '' )。例如,尝试在命令行中键入以下文本:

'Don''t confuse two single quotation marks with a double quotation mark!'

将显示以下输出:

Don't confuse two single quotation marks with a double quotation mark!

Exchange 命令行管理程序中的命令运算符

在 Exchange 命令行管理程序中键入命令时,可使用表 2 中的运算符。有些运算符可能与前面提到的某些命令约定一致。但是在命令行中键入时的含义不同。表 2 显示可以在命令中使用的有效运算符。

表 2   Exchange 命令行管理程序的命令运算符

运算符 说明

=

等号作为赋值字符使用。将等号右侧的值赋给等号左侧的变量。下列字符也是赋值字符:

  • +=   将等号右侧的值添加到等号左侧的变量中包含的当前值。

  • -=   从等号左侧的变量中包含的当前值减去等号右侧的值。

  • *=   将等号左侧的变量的当前值乘以等号右侧指定的值。

  • /=   将等号左侧的变量的当前值除以等号右侧指定的值。

  • %*=   通过等号右侧指定的值修改等号左侧的变量的当前值。

:

可以使用冒号分隔参数名和参数值,例如:-Enabled:$True。除了开关参数之外,冒号对于所有其他参数类型都是可选的。有关开关参数的详细信息,请参阅参数

!

感叹号是逻辑 NOT 运算符。感叹号与等号 () 一起使用时,组合的字符对表示“不等于”。

[ ]

方括号用于指定数组位置的索引值。例如,$Red[9] 是指数组 $Red 中的第十个索引位置。由于数组索引从零 (0) 开始,所以是指第十个索引位置。

方括号还可以用于为变量分配类型,如下例所示: $A=[XML] "<Test><A>value</A></Test>"。有效的类型如下:ArrayBoolByteCharChar[]DecimalDoubleFloatIntInt[]LongLong[]RegExSingleScriptBlockStringTypeXML.

{ }

大括号用于在命令中包含表达式,例如:Get-Process | Where { $_.HandleCount -gt 400 }

|

一个 cmdlet 将结果通过管道传递给另一个 cmdlet 时,将使用竖线符号。例如,以下命令将 Get-Mailbox cmdlet 的结果通过管道传递给 Move-Mailbox cmdlet:Get-Mailbox -Server SRV1 | Move-Mailbox -TargetDatabase SRV2

>

右尖括号用于将命令输出发送到文件,例如:Get-TransportRulePredicate > c:\out.txt。目标文件将被覆盖。

>>

双右尖括号用于将命令输出附加到文件中(如果文件存在)。如果文件不存在,则新建一个文件。以下示例说明如何使用双右尖括号:Get-TransportRulePredicate >>c:\out.txt

" "

引号用于括起包含空格的字符串。

$

美元符号用于表示变量。例如,$Blue = 10 将值 10 赋给变量 $Blue

@

@ 符号用于引用结合数组。有关详细信息,请参阅阵列

$( )

美元符号 ($) 和圆括号用于表示命令替换。如果希望使用一个命令的输出作为另一个命令中的参数,则可以使用命令替换,例如:Get-ChildItem $(Read-Host -Prompt "Enter FileName: ")

..

双句点用于表示值范围。例如,如果数组包含多个索引,则可以指定以下命令,以返回第二个索引与第五个索引之间的所有索引的值:$Blue[2..5]

+

+ 运算符用于将两个值相加。例如,6 + 6 等于 12

-

- 运算符用一个值减去另一个值。例如,12 - 6 等于 6

- 运算符还可以用于代表负数,例如 -6。例如,-6 * 6 等于 -36

*

通配符具有多种含义。使用通配符可以匹配字符串或将数字值相乘,如果字符串与数字值一起使用,还可以将字符串值重复由数字值指定的次数,如下例所示:"Test" * 3 等于 TestTestTest

/

/ 运算符用一个值除以另一个值。例如,6 / 6 等于 1

%

% 运算符用于返回除号运算符的余数。例如, 6 % 4 等于 2