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 參數是位置 (,因為它以方括弧括住) 和選擇性 (,因為整個參數值組會以方括弧括住) ,因此您可以使用 Get-Mailbox -Identity <MailboxIdParameter>Get-Mailbox <MailboxIdParameter> 。 同樣地, Set-Mailbox [-Identity] <MailboxIdParameter> 表示 Identity 參數是位置 (,因為它會以方括弧括住) ,而且需要 (,因為整個參數值組不會以方括弧括住) ,因此您可以使用 Set-Mailbox -Identity <MailboxIdParameter>Set-Mailbox <MailboxIdParameter>
| 參數值中的直立線符號表示值之間的選擇。 例如,-Enabled < $true | $false > 表示 Enabled 參數可以有 或 值 $true$false

這些命令慣例可協助您了解如何建構命令。 除了指出參數的連字號之外,當您在 Exchange PowerShell 中執行 Cmdlet 時,不會使用這些符號,如表格中所述。

Exchange PowerShell 中的參數集

參數集是可在相同命令中,一起使用的參數群組。 每個參數集都包含至少一個其他參數集中無法使用的參數,但參數集通常會共用一些 parameters.s。

許多 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
  • 內部
  • Language
  • 文字
  • 確認
  • DomainController
  • WhatIf

第二個參數集中提供下列參數,因此您可以在相同的命令中使用這些參數:

  • QuotaMessageType
  • Language
  • 文字
  • 確認
  • DomainController
  • WhatIf

參數 DsnCodeInternal僅適用于第一個參數集。 參數 QuotaMessageType 僅適用于第二個參數集。 因此,您無法在相同的命令中使用下列參數:

  • DsnCodeQuotaMessageType
  • InternalQuotaMessageType

這兩個參數集都提供下列參數,因此您可以在任何 New-SystemMessage 命令中使用這些參數:

  • Language
  • 文字
  • 確認
  • DomainController
  • WhatIf

專案 <CommonParameters> 表示 Cmdlet 支援幾乎任何 Cmdlet 上可用的基本Windows PowerShell參數 (例如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]

方括弧也可以將類型指派給變數。 例如,若要識別名為 XML 的 $A 變數,請使用 $A=[XML] "<Test><A>value</A></Test>" 。 可用的變數類型如下: Array 、、 BoolByteChar[]Char 、、 DoubleDecimalFloatIntInt[]Long 、、 Long[] 、、 SingleScriptBlockStringTypeRegExXML.
{ } 使用大括弧在命令中包含運算式。 例如,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 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"}