Exchange 管理命令介面入門

 

上次修改主題的時間: 2007-01-31

作者︰David Strome

Exchange 管理命令介面是 Microsoft Exchange Server 2007 的新增功能,是建置在 Microsoft Windows PowerShell 技術上一種功能強大的管理介面。您可以使用 Exchange 管理命令介面,執行 Exchange 管理主控台中可用的每一項工作,以及無法在 Exchange 管理主控台中執行的工作。除此之外,當您在 Exchange 管理主控台中執行工作時,Exchange 管理命令介面也會進行相同的命令,並呼叫該命令以處理要求。

圖 1 顯示動作中的 Exchange 管理命令介面。

圖 1 Exchange 管理命令介面

顯示信箱移動的 Exchange 管理命令介面

初次使用命令介面時,可能會對那些不熟悉的命令列感到氣餒。但還是先來瞧瞧可以執行哪些酷炫功能,以及入門使用有多麼簡單吧︰

  • 撰寫指令檔安全又簡單   Exchange 管理主控台不只會使用 Exchange 管理命令介面來執行作業。精靈會顯示出正在執行中的 Exchange 管理命令介面的命令。您可以複製精靈建立的命令,然後直接貼到命令列上或指令碼中。依據需求修改參數之後,請使用 WhatIf 參數來測試您的指令碼或命令,這可讓您在對環境做出任何變更前,先看看結果。

    修改參數?WhatIf?聽起來很複雜嗎?不用擔心!請參閱<Microsoft Exchange Server 2007>文件中的<使用 Exchange 管理命令介面>一節 (英文)。您很快就能熟悉操作並開始執行。

  • 既清楚又簡單   我們使用一致的動名詞組合,清楚識別受管理的功能或元件以及所採取的動作。您不再需要猜測指令程式的功能。當您看見 Move-Mailbox 指令程式,您可以明確知道此指令程式的用途。(沒錯,它可以用來移動信箱!)

  • 資源與時間均發揮到極致,挫折感全無   Exchange 管理命令介面提供健全又有彈性的指令碼平台,並與目前的指令碼解決方案整合,您可以自然地與諸如 COM、Windows Management Instrumentation (WMI) 等資料來源相互溝通。明智地運用資源與時間來產生有用的解決方案,而不用花時間建立支援的架構。

  • 跟我說一遍︰再也不必進行文字解析了!   以 Microsoft .NET 為基礎,Exchange 管理命令介面指令程式可接受和傳回結構化的資料,而非純文字。這樣無需經過麻煩的文字解析過程,就可以輕鬆地來回傳送資料。甚至使用單一列,就可以將 CSV 與 XML 檔轉換成您可以操作或耗用的物件。

開始使用 Exchange 管理命令介面之前,先了解一些基本概念會很有幫助。

  • 基礎的 Windows PowerShell 技術   Windows PowerShell 是以 .NET Framework 為基礎的新式命令列介面,功能既強大又相當具有彈性。結合了數種最優良的命令介面,再加上一些極佳的新功能。PowerShell 是設計來主控其他應用程式,就如同 Microsoft Management Console (MMC) 一樣,扮演電腦上安裝的應用程式所提供之各種嵌入式管理單元的主機。Exchange 管理命令介面是第一個發行的 Microsoft PowerShell 嵌入式管理單元。

  • 指令程式   Cmdlet (指令程式,發音為 "command-let") 是 Exchange 管理命令介面中的最小功能單位。指令程式類似其他命令介面的內建命令,例如可在 cmd.exe 中找到的 Dir 命令。就像這些常見的命令一樣,指令程式也可在 Exchange 管理命令介面中直接從命令列呼叫,然後在命令介面下執行,而不是以個別的程序執行。Exchange 管理命令介面不像其他的命令介面,其中的指令程式會有描述性的動名詞名稱。動詞說明該指令程式採取的動作,而名詞則說明要實行動作的元件或功能。例如,使用 New-SystemMessage 指令程式,可在已安裝 Hub Transport server role 的電腦上,建立新的傳遞狀態通知 (DSN) 或配額郵件。

    如需特定指令程式的相關資訊,請參閱 Exchange 2007 說明之<技術參考>節點中的<Exchange 管理命令介面>一節 (英文)。

  • 識別與位置參數   參數是提供資訊給指令程式的元素,用以識別所要運用的物件及其屬性,或控制指令程式執行工作的方式。您可以使用 Identity 參數搭配大部分 Exchange 指令程式。Identity 參數可讓您存取唯一識別碼,而這些唯一識別碼又參照到 Exchange 2007 中的特定物件。這可讓您對使用唯一值的特定 Exchange 物件執行動作。

    Identity 參數是來自其他參數的值集合。這些值在該組物件之間必定具有唯一性。您可以指定這些額外參數的值 (如 NameDistinguishedName),值也可以透過系統產生 (如 GUID)。所使用的額外參數 (若有的話) 及其填入方式端視您所參照的物件而定。

    Identity 參數也會被視為位置參數。位置參數是讓您指定參數值但不需要指定參數名稱的參數。如果 Parameter Position 屬性是整數,則此參數是位置參數。此整數指出指令程式可以在命令列上找到參數值的位置。因為 Identity 是位於位置 1 的位置參數 (也就是第一個位置),所以在此位置輸入且不具有參數名稱的值,都會被視為 Identity 參數值。

    這代表什麼意義?這代表您在鍵入指令時不需要用到太多按鍵。例如,Get-Mailbox "Kim Akers" 會執行跟 Get-Mailbox -Identity "Kim Akers" 一樣的動作。

  • 管線    在 Exchange 管理命令介面中,管線是指某個指令程式於執行作業時,使用其他指令程式的輸出結果。您可以使用管線來串接兩個或更多個指令程式。這表示您可以執行較小的元件,然後加以轉化以獲得更為強大的功能。例如,您可以使用一個指令程式收集資料,然後將此資料傳遞到第二個指令程式以將資料篩選為子集,再將資料傳遞到第三個指令程式,以便只對子集執行動作。如同下列範例,Sales 資料庫中的所有信箱都會移至同一部伺服器上的 Research 資料庫:

    Get-MailboxDatabase Sales | Get-Mailbox | Move-Mailbox -TargetDatabase Research
    

    來瞧瞧管線 "|" 符號如何運用吧!首先,使用 Get-MailboxDatabase 指令程式擷取 Sales 信箱資料庫,然後將結果物件傳送至 Get-Mailbox 指令程式。接著,Get-Mailbox 指令程式會擷取 Sales 資料庫中的所有信箱。然後信箱的結果集就會傳送至 Move-Mailbox 指令程式,以將信箱移至 Research 信箱資料庫。此命令如本文稍早的圖 1 中所示。

    相同名詞指令程式集中的所有動詞,皆可使用其他命令的管線資訊。某些名詞指令程式集還可讓您透過管線將資料傳遞到其他名詞指令程式集。什麼是「名詞指令程式集」?管理特定功能的所有 Exchange 管理命令介面指令程式會共用相同的名詞,例如 MailboxAddressList。如需按名詞排列的所有指令程式清單,請參閱<指令程式清單>(英文)。

Windows PowerShell 嵌入式管理單元是指令程式集合,用以管理應用程式或主要元件。如果您未載入特定應用程式的嵌入式管理單元,您就無法使用相關聯的指令程式。

上句話代表什麼意思?如果未載入 Exchange 管理命令介面嵌入式管理單元就啟動 PowerShell,還嘗試發出 Exchange 管理命令介面指令程式 (例如 Get-Mailbox),就會發生錯誤。為什麼呢?因為 Get-Mailbox 指令程式不存在於 PowerShell 指令程式的核心集中。

所以,請遵循先後順序︰先開啟 Exchange 管理命令介面吧。只要依序按一下 [開始]、[程式集]、[Microsoft Exchange Server 2007] 及 [Exchange 管理命令介面] 就行了。

如需開始使用的相關背景資訊,請參閱<Exchange 管理命令介面中的新系統管理功能>(英文)。

對於 Exchange 2007,Microsoft Exchange 使用者教育團隊已開發出完善的文件集,您可以在 Exchange 管理命令介面內取得,也可以在 Exchange 管理主控台以及線上的 Exchange Server 2007 說明檔中取得。

當您學習瀏覽 Exchange 管理命令介面時,您會發現命令介面中的 Get-Help 指令程式是十分寶貴的資源。請務必查閱 Exchange Server 2007 說明檔中的<作業>一節。該節包含數十篇有關程序的主題,可在使用 Exchange 管理命令介面與 Exchange 管理主控台時,協助您執行大部分的系統管理工作。您可以從 Exchange 2007 的 [開始] 功能表存取 Exchange Server 2007 說明檔,以及在<Microsoft Exchange Server 2007>(英文) 線上存取。

在命令介面中,使用 Get-Help 指令程式,便可存取多種格式的指令程式特定說明。鍵入 Get-Help 會顯示一般的說明資訊。當您開始提供參數時,Get-Help 指令程式的效用還會更強大。

若要取得特定指令程式的說明,請在 Get-Help 後面鍵入想要取得相關資訊的指令程式,例如 Get-Help Get-SystemMessage。依照預設,命令介面會顯示該指令程式的說明與其語法。它還會隱藏並非所有系統管理員都用得到的其他區段。

您可以使用 DetailedFullExample 參數,來控制呈現出來的資訊。只要將這些參數加到命令結尾即可。例如,Get-Help -Full 會傳回某個指令程式可用的所有說明區段。請鍵入您自己想要的命令,查看您最愛的指令程式會顯示出哪些資訊。

如果您想要擷取指令程式上特定參數的相關資訊,您可以使用 Parameters 參數搭配 Get-Help 指令程式。例如,若您想檢視 Set-Mailbox 指令程式中,含有 "quota" 一字的所有參數與其說明,請鍵入 Get-Help Set-Mailbox -Parameter *quota*

或者,您可能會希望檢視管理特定伺服器角色或元件功能,或者跨某個功能範圍影響物件之指令程式的清單。您可以使用 Get-Help 指令程式與下列三個參數來進行:RoleComponentFunctionality。當您搭配這些參數使用 Get-Help 指令程式時,請記住要以萬用字元 (*) 括住搭配這些參數所指定的值。以下是如何使用每個參數呼叫 Get-Help 的範例:

  • Get-Help -Role *Mailbox*

  • Get-Help -Component *Recipient*

  • Get-Help -Functionality *Server*

Exchange Server 2007 說明檔中的<取得說明>(英文) 主題列出所有可以使用的角色、元件與功能值。

依照預設,當畫面顯示出命令輸出時,Exchange 管理命令介面只會顯示各個物件可用內容的子集。為什麼呢?因為每個物件會包含數十個內容,所以您會想要根據需求最佳化命令輸出。將命令的輸出傳送至下列三種格式化指令程式,您就可以輕鬆存取和檢視所有內容︰Format-ListFormat-TableFormat-Wide

Format-ListFormat-Table 最常使用,以下將會更詳細說明。

Format-List 指令程式可從管線取得輸入,然後輸出每一個物件之所有指定內容的垂直欄清單。您可以使用屬於位置參數的 Property 參數,指定要顯示的內容。如果您呼叫 Format-List 指令程式時未指定任何參數,則會輸出所有內容。Format-List 指令程式會將文字換行而不會截斷它們。Format-List 指令程式的最佳用途之一是覆寫指令程式的預設輸出,使您可以擷取其他或更重要的資訊,如同以下範例︰Get-DistributionGroup | Format-List Name, *OnlyFrom, PrimarySmtpAddress, *Size*圖 2 顯示此命令的輸出。

圖 2   Format-List 範例輸出

Format-Table 指令程式的範例輸出

Format-Table 指令程式可讓您以含有標示的標題及內容資料欄位的表格格式來顯示項目。依照預設,許多指令程式 (如 Get-MailboxGet-JournalRule 指令程式) 都會針對輸出使用表格格式。Format-Table 指令程式的參數有 PropertiesGroupBy 參數。其作用與 Format-List 指令程式的作用一模一樣。若要讓冗長的內容資料行全部顯示出來,而不會在行尾遭到截斷,請使用 Wrap 參數搭配 Format-Table 指令程式,如下列範例所示︰Get-Mailbox -Database Research | Format-Table Name, ProhibitSendQuota, Database -Wrap. 圖 3 顯示此命令的輸出。

圖 3   Format-Table 範例輸出

Format-Table 指令程式的範例輸出

您也可以使用 Format-ListFormat-Table 兩種指令程式,指定萬用字元 "*" 搭配部分內容名稱,如圖 2 所示。如果包括萬用字元,則可比對多個內容,而不需個別輸入每一個內容名稱。例如,Get-Mailbox | Format-List -Property Email* 會傳回以 Email 開始的所有內容。鍵入動作變少了,多出的時間讓您更加精進 Exchange 2007 的技能!

若要深入了解 Exchange 2007 與 Exchange 管理命令介面,請參閱下列資源︰

e20b37a2-3200-4bd5-af71-09c580f78091 David Strome - Microsoft Exchange Server 的技術作者

 
顯示: