Exchange cmdlet 语法

Exchange cmdlet 参考文章使用标准化方法,用于描述有关 cmdlet 的关键方面。 例如:

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

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

Exchange PowerShell 中的命令约定

Exchange PowerShell 帮助遵循约定来指示必需或可选信息,以及如何在运行命令时输入参数和值。 以下列表中介绍了这些命令约定:

  • -:连字符指示参数。 例如,-Identity
  • < >:尖括号指示参数的可能值。 例如,-Location <ServerName>-Enabled <$true | $false>
  • [ ]:方括号指示可选参数及其值。 例如,[-WhatIf][-ResultSize <Unlimited>]
    • 需要不用方括号括起来的参数值对。 例如,-Password <SecureString>
    • 参数名称本身周围的方括号指示 一个位置 参数,你可以在其中使用参数值,而无需指定参数名称。 位置参数是必需参数或可选参数。 例如:
      • Get-Mailbox [[-Identity] <MailboxIdParameter>] 表示 Identity 参数为:
        • Positional,因为参数括在方括号中。
        • 可选,因为整个参数值对都用方括号括起来。
        • 因此,可以使用 Get-Mailbox -Identity <MailboxIdParameter>Get-Mailbox <MailboxIdParameter>
      • Set-Mailbox [-Identity] <MailboxIdParameter> 表示 Identity 参数为:
        • Positional,因为 参数用方括号括起来。
        • 必需,因为整个参数值对未括在方括号中。
        • 因此,可以使用 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] <CommonParameters>

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

第一个参数集中提供了以下参数,因此可以在同一命令中使用它们:

  • DsnCode
  • 内部
  • 语言
  • Text
  • 确认
  • DomainController
  • WhatIf

以下参数可在第二个参数集中使用,因此可以在同一命令中使用它们:

  • QuotaMessageType
  • 语言
  • Text
  • 确认
  • DomainController
  • WhatIf

参数 DsnCodeInternal 仅在第一个参数集中可用。 参数 QuotaMessageType 仅在第二个参数集中可用。 因此,不能在同一命令中使用以下参数:

  • DsnCodeQuotaMessageType
  • InternalQuotaMessageType

以下参数在两个参数集中都可用,因此可以在任何 New-SystemMessage 命令中使用它们:

  • 语言
  • Text
  • 确认
  • DomainController
  • WhatIf

条目<CommonParameters>指示 cmdlet 支持基本Windows PowerShell参数,这些参数几乎可用于任何 cmdlet (例如 Verbose) 。 可以将公共参数与任何参数集中的参数一起使用。 有关详细信息,请参阅 about_CommonParameters

Exchange PowerShell 中的引号

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

  • Get-ReceiveConnector -Identity "Contoso Receive Connector"

  • Get-ReceiveConnector -Identity 'Contoso Receive Connector'

在前面的示例中,如果不将值括在单引号或双引号中,则命令会失败,因为 PowerShell 将每个单词视为新参数 (它认为 ContosoIdentity 参数的值,并且 Receive 是未指定位置参数) 的值。 在此示例中,错误如下所示:

找不到接受参数“Receive”的位置参数

对于纯文本值,单引号与双引号并不重要。 但是,当涉及变量时,选择很重要:

  • 双引号:变量替换为其实际值。
  • 单引号:变量按字面意思处理。

例如, $Server = Mailbox01 根据使用的引号生成以下输出:

  • “$Server示例” 结果为 Mailbox01 Example
  • “$Server示例” 结果为 $Server Example

有关变量的详细信息,请参阅 about_Variablesabout_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 中的命令约定一节进行了介绍。 但是,当用作运算符时,这些符号具有不同的含义。 例如,指示参数的减号也可以用作数学运算符。

  • =:等号是赋值字符。 将等号右侧的值分配给左侧的 变量。 例如,$x = Get-Mailbox。 还可以使用具有等号的其他字符:

    • +=:将等号右侧的值添加到左侧变量中的当前值。
    • -=:从左侧变量中的当前值中减去等号右侧的值。
    • *=:将等号左侧变量的当前值乘以右侧指定的值。
    • /=:将等号左侧变量的当前值除以右侧指定的值。
    • %=:根据右侧指定的值修改等号左侧变量的当前值。
  • ::使用冒号将参数名称与参数值分开。 例如,-Enabled:$True

    • 冒号分隔符有效,并且对于几乎所有参数值对都是可选的。
    • 开关参数上需要冒号分隔符。 有关开关参数的详细信息,请参阅 about_Parameters
  • !:感叹号是逻辑 NOT 运算符。 组合对 != 表示“不等于”。

  • [ ]:括号指定数组位置的索引值。 索引值是始终从零开始的偏移量。 例如,在名为 $Red的数组中,数组 $Red[9]中第十个位置的值为 。

    括号还可以将类型分配给变量。 例如,若要标识名为 $A XML 的变量,请使用 $A=[XML] "<Test><A>value</A></Test>"。 以下变量类型可用:Array、、Long[]CharChar[]ByteDecimalDoubleIntLongInt[]FloatSingleBoolRegExScriptBlock、、String、 和 TypeXML.

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

  • |:使用管道符号通过管道将一个命令的输出传递给另一个命令。 例如,Get-Mailbox -Server SRV1 | Set-Mailbox -ProhibitSendQuota 2GB

  • >:使用右尖括号将命令的输出发送到文件。 如果文件已存在,则覆盖内容。 例如,Get-TransportRule > "C:\My Documents\TransportRules.txt"

  • >>:使用双右尖括号将命令的输出追加到现有文件。 如果该文件不存,则将创建新文件。 例如,Get-TransportRule >> "C:\My Documents\TransportRules.txt"

  • ":使用双引号将包含空格的文本字符串括起来。 如前所述,变量将替换为其实际值。

  • $:美元符号指示变量。 例如,若要创建值为 10 的变量 $Blue ,请使用 $Blue = 10。 存储变量后,可以将其用作参数值。

  • @:at 符号引用关联数组。 有关详细信息,请参阅 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"}Get-Alias | ? {$_.Definition -eq "Clear-Host"}相同。