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>]表示 标识 参数为:- 位置,因为参数括在方括号中。
- 可选,因为整个参数-值对包含在方括号中。
- 因此,可以使用
Get-Mailbox -Identity <MailboxIdParameter>orGet-Mailbox <MailboxIdParameter>.
-
Set-Mailbox [-Identity] <MailboxIdParameter>表示 标识 参数为:- 位置,因为参数括在方括号中。
- 必需,因为整个参数-值对未包含在方括号中。
- 因此,可以使用
Set-Mailbox -Identity <MailboxIdParameter>orSet-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
参数 DsnCode 和 Internal 仅在第一个参数集中可用。 参数 QuotaMessageType 仅在第二个参数集中可用。 因此,不能在同一命令中使用以下参数:
- DsnCode 和 QuotaMessageType。
- Internal 和 QuotaMessageType。
以下参数在这两个参数集中都可用,因此可以在任何 New-SystemMessage 命令中使用它们:
- 语言
- Text
- “确认”
- DomainController
- WhatIf
该<CommonParameters>条目指示 cmdlet 支持几乎可以在任何 cmdlet ((例如 Verbose) )上使用的基本 Windows PowerShell 参数。 可以将常用参数与任何参数集中的参数一起使用。 有关详细信息,请参阅 about_CommonParameters。
Exchange PowerShell 中的引号
在 Exchange PowerShell 中,可以使用单引号 (') 或双引号 (") 括起包含空格的参数值。 例如,以下命令的行为相同:
Get-ReceiveConnector -Identity "Contoso Receive Connector"Get-ReceiveConnector -Identity 'Contoso Receive Connector'
在前面的示例中,如果未将值括在单引号或双引号中,则该命令将失败,因为 PowerShell 将每个单词视为新参数, (它认为 Contoso 是 Identity 参数的值,并且 Receive 是未指定的位置参数) 的值。 在此示例中,错误如下所示:
找不到接受参数“Receive”的位置参数
对于纯文本值,单引号和双引号并不重要。 但是,当涉及变量时,选择很重要:
- 双引号:变量被其实际值替换。
- 单引号:按字面意思处理变量。
例如, $Server = Mailbox01 根据您使用的引号,可得到以下输出:
-
“$Server Example” 结果为
Mailbox01 Example。 -
'$Server Example' 结果为
$Server Example.
有关变量的详细信息,请参阅 about_Variables 和 about_Automatic_Variables。
Exchange PowerShell 中的转义字符
在任意编程语言中,转义字符用于按字面识别特殊字符,而不是识别它们在该语言中的正常功能。 在 Exchange PowerShell 中,当你将文本字符串括在双引号中时,转义字符是反引号转义字符 ' ) (。
例如,如果需要输出 The price is $23,请输入值 “The price is '$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]。方括号还可以为变量分配类型。 例如,要标识名为
$AXML 的变量,请使用$A=[XML] "<Test><A>value</A></Test>"。 提供以下变量类型:Array、、、SingleFloatLong[]LongRegExInt[]ScriptBlockStringByteChar[]TypeCharDecimalDoubleIntBoolXML.{ }:使用大括号在命令中包含表达式。 例如,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"。":使用双引号将包含空格的文本字符串括起来。 如前所述,变量将替换为其实际值。$:美元符号指示变量。 例如,要创建命名$Blue为值为 10 的变量,请使用$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 asImport-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"}.|
- 在数值求值中,它从除法运算符返回余数。 例如,