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 中的參數集

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

許多 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

參數 DsnCode 和 Internal 只能在第一個參數集中使用。 QuotaMessageType 參數僅適用於第二個參數集。 因此,您無法在同一個命令中使用下列參數:

  • DsnCode 和 QuotaMessageType。
  • Internal 和 QuotaMessageType。

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

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

該<CommonParameters>項目表示 Cmdlet 支援幾乎所有 cmd (let 上都提供的基本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範例」 會產生 Mailbox01 Example。
  • '$Server Example' 會產生 $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 中的命令慣例區段中,也已說明了這些符號其中的一部分。 然而,這些符號在用作運算子時具有不同的含義。 例如,表示參數的減號也可以用作數學運算子。

  • =:等號是指派字元。 等號右側的值會指派給左側的變數。 例如,$x = Get-Mailbox。 您也可以使用其他帶等號的字元:

    • +=:將等號右側的值與左側變數中的目前值相加。
    • -=:以左側變數的電流減去等號右側的值。
    • *=:將等號左側變數的目前值乘以右側指定的值。
    • /=:將等號左側變數的目前值除以右側指定的值。
    • %=:將等號左側變數的目前值以右側指定的值修改。
  • ::使用冒號分隔參數名稱和參數值。 例如,-Enabled:$True。

    • 冒號分隔符號可運作,而且幾乎在所有參數值對上都是可選的。
    • 開關參數上需要冒號分隔符號。 如需參數參數的詳細資訊,請參閱 about_Parameters。
  • !:驚嘆號是邏輯 NOT 運算子。 組合對 != 的意思是「不等於」。

  • [ ]:括弧會指定陣列位置的索引值。 索引值是一律從零開始的位移。 例如,在名為 $Red的陣列中,陣列中第十個位置的值是 $Red[9]。

    括弧也可以將類型指派給變數。 例如,若要識別名為 $A XML 的變數,請使用 $A=[XML] "<Test><A>value</A></Test>"。 下列變數類型可供使用: Array、 Bool、 Byte、 TypeStringScriptBlockSingleRegExLong[]LongInt[]FloatDecimalIntCharChar[]Double和XML.

  • { }:使用大括弧在命令中包含運算式。 例如,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"}.|