共用方式為


Exchange Cmdlet 語法

Exchange 指令長參考文章使用標準化方法,描述指令長的關鍵面向。 例如:

  • 參數可在指令本上提供。
  • 每個參數都接受的值。
  • 有些參數可以一起使用,有些參數需要分開使用。

本文說明這些慣例,以及執行 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>Get-Mailbox <MailboxIdParameter>
      • 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] <CommonParameters>

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

以下參數可在第一個參數集中使用,因此你可以在同一指令中使用:

  • DsnCode
  • 內部
  • Language
  • 文字
  • 確認
  • 網域控制器
  • 如果

以下參數可在第二個參數集中使用,因此你可以在同一指令中使用:

  • QuotaMessageType
  • Language
  • 文字
  • 確認
  • 網域控制器
  • 如果

DsnCodeInternal 參數僅在第一個參數集中可用。 參數 QuotaMessageType 僅在第二組參數中可用。 所以,你不能在同一個指令中使用以下參數:

  • DsnCodeQuotaMessageType
  • 內部QuotaMessageType

以下參數在兩種參數集中皆可使用,因此你可以在任何 New-SystemMessage 指令中使用:

  • Language
  • 文字
  • 確認
  • 網域控制器
  • 如果

<CommonParameters>目表示該指令長支援幾乎所有指令 (都有的基本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 Example」 結果為 $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>"。 可用變數類型如下:ArrayBoolStringRegExTypeScriptBlockSingleLong[]LongInt[]IntDoubleChar[]FloatByteCharDecimalXML.

  • { }:在指令中包含表達式時,請使用大括號。 例如,Get-Process | Where {$_.HandleCount -gt 400}

  • |:使用 pipe 符號將一個指令的輸出輸出傳送到另一個指令。 例如,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 * 636於 。
    • 重複該字串值指定次數:例如, "Test" * 3TestTestTest等於 。
  • /:斜線將一個數值除以另一個。 例如, 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 指令檔的簡稱。 例如, Get-Alias | Where-Object {$_.Definition -eq "Clear-Host"} 與 .| 相同 Get-Alias | ? {$_.Definition -eq "Clear-Host"}