Exchange cmdlet 语法

Exchange cmdlet 参考文章使用一种介绍 cmdlet 关键方面的标准化方法。 例如:

  • cmdlet 上可用的参数。
  • 每个参数接受的值。
  • 可以一同使用的参数和需要单独使用的参数。

本文介绍了这些约定,以及运行 Exchange PowerShell 中的命令所需的语法。

Exchange PowerShell 中的命令约定

Exchange PowerShell 帮助遵循指示为必需还是可选的约定,以及有关如何在运行命令时输入参数和值的约定。下表列出了这些命令约定。

符号 说明
- 连字符表示参数。 例如,-Identity
< > 尖括号表示某个参数的可能的值。 例如, -Location <ServerName> 或 -Enabled <$true | $false> 。
[ ] 方括号表示可选参数及其值。 例如, [-WhatIf][-ResultSize <Unlimited>]

未括在方括号中的参数-值对是必需的。 例如,-Password <SecureString>

如果参数名称本身括在方括号中,表示参数是位置参数 (则无需指定参数) 即可使用参数值,位置参数可以是必需参数,也可以可选。

例如,意味着 Identity 参数是位置 (因为它包含在方括号) 和可选 (中,因为整个参数值对包含在方括号) 中,因此您可以使用 Get-Mailbox [[-Identity] <MailboxIdParameter>] Get-Mailbox -Identity <MailboxIdParameter>Get-Mailbox <MailboxIdParameter> 。 同样,意味着 Identity 参数是位置 (因为它包含在方括号) 中,并且是必需的 (因为整个参数值对未包含在方括号) 中,因此您可以使用 Set-Mailbox [-Identity] <MailboxIdParameter> Set-Mailbox -Identity <MailboxIdParameter>Set-Mailbox <MailboxIdParameter>

| 参数值中的竖线表示在值之间进行选择。 例如,-Enabled <$true | $false> 指示 Enabled 参数可以具有值 $true$false

这些命令约定有助于了解命令的构成。除连字符表示参数之外,在 Exchange PowerShell 中运行 cmdlet 时,不要按此表中所述的方式来使用这些符号。

Exchange PowerShell 中的参数集

参数集是在同一命令中可以一起使用的参数组。 虽然参数集通常共享一些参数,但每个参数集至少包含一个参数,该参数集在其他参数集不可用,并且不能用于不同参数集的一些参数。

许多 cmdlet 仅有一个参数集,这意味着所有可用参数均可一同使用。其他 cmdlet 有多个参数集,这表示某些参数可执行与其他参数不兼容的功能。例如,假设 New-SystemMessage cmdlet 具有以下参数集:

New-SystemMessage -DsnCode <EnhancedStatusCode> -Internal <Boolean> -Language <CultureInfo> -Text <String> [-Confirm] [-DomainController <Fqdn>] [-WhatIf] <COMMON PARAMETERS>

New-SystemMessage -Language <CultureInfo> -QuotaMessageType <QuotaMessageType> -Text <String> [-Confirm] [-DomainController <Fqdn>] [-WhatIf] <COMMON PARAMETERS>

此 cmdlet 有两个单独的参数集。 根据这些条目,可以在相同的命令中同时使用这些参数:

  • DsnCode
  • 内部
  • Language
  • Text
  • Confirm
  • DomainController
  • WhatIf

你可以在同一命令中一起使用这些参数:

  • Language
  • QuotaMessageType
  • Text
  • Confirm
  • DomainController
  • WhatIf

但你无法在同一命令中一起使用这些参数:

  • DsnCodeQuotaMessageType
  • InternalQuotaMessageType

该条目指示该 cmdlet 支持几乎Windows PowerShell cmdlet 上提供的基本 (参数, <COMMON PARAMETERS> 例如 调试) 。 可以将常用参数与任意参数集的参数一同使用。 有关详细信息,请参阅 about_CommonParameters

Exchange PowerShell 中的引号

在 Exchange PowerShell 中,可以使用单引号 (') 或双引号 (") 括起包含空格的参数值。例如,以下命令的行为相同:

  • Get-ReceiveConnector -Identity "Contoso Receive Connector"

  • Get-ReceiveConnector -Identity 'Contoso Receive Connector'

如果不将该值括在引号内,Exchange PowerShell 会尝试将每个单词都视为一个新参数,该命令 Contoso Receive Connector 将失败。 在此示例中,系统将收到如下所示的错误:

找不到接受参数"Receive"的位置参数

如果值包含变量,则需要在单引号和双引号之间仔细选择。 例如,假设您有一个名为的变量 $Server ,该变量具有值 Mailbox01

  • 双引号:变量替换为其值。 例如,如果 $Server 变量具有值 Mailbox01,则输入 "$Server示例" 将输出 Mailbox01 Example

  • 单引号:按字面处理变量。 输入 "$Server示例" 产生输出 $Server Example

有关变量详细信息,请参阅about_Variables和about_Automatic_Variables。

Exchange PowerShell 中的转义字符

在任意编程语言中,转义字符 用于按字面识别特殊字符,而不是识别它们在该语言中的正常功能。 在 Exchange PowerShell 中,当您用双引号将文本字符串括起来时,转义字符是返回引号转义符 ( ' ) 。

例如,如果需要输出,请输入值 The price is $23 "价格为 ` $23"。 由于 $ 在 PowerShell 中定义了变量,因此 $ ( $) 符号字符上需要转义字符。

如果将字符串括在单引号中,则唯一需要担心的特殊字符是单引号字符本身,这需要两个单引号来转义 '' () 。

例如,如果您需要输出,请输入值"请勿将两个单引号与 Don't confuse two single quotation marks with a double quotation mark! 双引号混淆!"。

Exchange PowerShell 中的命令运算符

下表显示了可用于 Exchange 命令中的有效运算符。其中某些符号还在之前的 Exchange PowerShell 中的命令约定一节进行了介绍。但是,这些符号作为运算符用于命令行中时,它们具有不同的含义。例如,用于表示参数的负号还可作为数学运算符用于命令中。

运算符 说明
= 等号作为赋值字符使用。将等号右侧的值赋给等号左侧的变量。下列字符也是赋值字符:
  • +=:将等号右侧的值添加到等号左侧变量中包含的当前值。
  • -=:从等号左侧变量中包含的当前值中减去等号右侧的值。
  • *=:将等号左侧变量的当前值乘以等号右侧指定的值。
  • /=:将等号左侧变量的当前值除以等号右侧指定的值。
  • %=:通过等号右侧指定的值修改等号左侧变量的当前值。
: 冒号可用于将参数名称与参数值分开。 例如,-Enabled:$True。 对于除开关参数之外的所有参数类型,使用冒号都是可选的。 有关开关参数详细信息,请参阅about_Parameters。
! 感叹号是逻辑 NOT 运算符。 当它用于等于 ( = ) 符号时,组合 () != 表示"不等于"。
[ ] 方括号用于指定数组位置的索引值。 索引值是从零开始的偏移。 例如,引用数组中第十 $Red[9] 个索引位置 $Red

方括号还可用于将类型分配给变量 (例如 $A=[XML] "<Test><A>value</A></Test>" ,) 。 以下变量类型 Array 可用:、 Bool Byte Char Char[] Decimal Double Float Int Int[] Long Long[] RegEx Single ScriptBlock String Type``XML.

{ } 大括号用于将表达式包括在命令中。 例如,Get-Process Where | {$ _ 。HandleCount -gt 400}
| 一个 cmdlet 将结果通过管道传递给另一个 cmdlet 时将使用竖线符号。 例如,Get-Mailbox -Server SRV1 | Set-Mailbox -ProhibitSendQuota 2GB。
> 右尖括号用于将命令输出发送到文件,并且文件内容将被覆盖。 例如,Get-TransportRulePredicate > "C:\My Documents\Output.txt"
>> 双右尖括号用于将命令输出附加到现有文件中。 如果该文件不存,则将创建新文件。 例如,Get-TransportRulePredicate >> "C:\My Documents\Output.txt"
" 双引号用于括起包含空格的文本字符串。
$ 美元符号用于表示变量。 例如, $Blue = 10 将值 10 分配给变量 $Blue
@ @ 符号用于引用关联数组。 有关详细信息,请参阅about_Arrays。
$( ) 带括号的美元符号表示命令替换。 当你想要将一个命令的输出用作另一个命令中的参数时,可以使用命令替换。 例如,Get-ChildItem $(Read-Host -Prompt "Enter FileName: ")
.. 双句点用于表示值范围。 例如,如果数组包含多个索引,则可以通过运行以下命令返回第二个和第五个索引之间所有索引 $Blue[2..5] 的值:
+ 加号运算符将两个值相加。 例如, 6 + 6 等于 12
- 减号运算符从另一个值中减去一个值 (例如,等于) 或指示一个负 (12 - 6 6 例如, -6 * 6 等于 -36) 。
* 可以使用星号:
  • 匹配字符串:例如, Get-User | Where-Object {$_.Department -like 'Sales*'})
  • 数值相乘:例如 6 * 6 ,等于 36
  • 重复指定次数的字符串值:例如 "Test" * 3 ,等于 TestTestTest
/ 正斜杠将一个值除以另一个值。 例如, 6 / 6 等于 1
% 百分号具有以下用途:
  • 在数值计算中,它返回除法运算符的余数。 例如, 6 % 4 等于 2
  • 管道中,它是 ForEach-Object cmdlet 的简写。 例如, Import-Csv C:\MyFile.csv | ForEach-Object {Set-Mailbox $_.Identity -Name $_.Name} is the same as Import-Csv C:\MyFile.csv | % {Set-Mailbox $_.Identity -Name $_.Name}
? 问号字符是 Where-Object cmdlet 的简写。 例如, Get-Alias | Where-Object {$_.Definition -eq "Clear-Host"} is the same as Get-Alias | ? {$_.Definition -eq "Clear-Host"}