Exchange 郵件管理 PowerShell 混合雲 權限管控

簡單指令搞定大量複雜操作 撰寫腳本實現排程自動化

進階維運Exchange 2019 活用PowerShell高效管理

2020-01-31
透過Exchange系統管理中心的網站來維護Exchange Server 2019的運行,雖然方便但能夠執行的管理任務相當有限,因此打從完成初步部署的那一刻起,IT人員就應該學會善用PowerShell命令介面來維護各種平日的工作,這樣不僅維護效率大幅提升,還可從中學習到許多進階的管理技巧。

 

人類因為不喜歡輸入繁雜的命令來操作電腦,才有Windows視窗操作介面的誕生,而且幾十年來立於全球不敗之地。然而,有趣的是,即便Windows與旗下的伺服端應用系統發展快速,但卻始終無法擺脫掉命令介面的使用。不僅如此,還變本加厲地讓原先基礎的DOS命令視窗升級成為現在的進階PowerShell。

為何已做到極度友善的視窗介面環境,就是不能沒有命令介面的輔助呢?答案很簡單,其實在所有視窗介面中的任何操作,背地裡都是在執行成堆的命令參數,這意味者當IT人員想要更有效率地完成某些較複雜的操作,例如大量修改某些帳號的屬性設定,可能只要執行一道命令參數就可以完成。更進階的應用則是在許多例行性任務的自動化管理需求,也往往僅須撰寫成一個Script來加入排程執行即可。

現今在微軟所有的產品中,除了Windows Server外,肯定就是Exchange Server最仰賴PowerShell的管理,原因是它不僅綁定了Active Directory和IIS等服務,而且對於許多運作功能的屬性設定,也要透過其專屬的PowerShell命令進行調整或最佳化,無法全部透過圖形管理介面來完成。熟悉PowerShell命令的使用,不僅能夠管理內網的Exchange Server,嚴格來說,還可以完全掌控整個以Microsoft為主的私有雲、公共雲以及混合雲的運作架構。由此可見,若想要成為全方位的Microsoft系統架構專家,選擇從Exchange Server入手是相當正確的決定,因為在學習過程中將會引用到許多與Windows Server、Active Directory、IIS等管理有關的PowerShell命令。接著,就來實戰學習一下想要成為Exchange Server 2019專家的幾個必學命令管理技巧。

檢查主機的服務與連線

如果是一位剛到新公司上任負責管理Exchange Server的IT人員,建議優先查看所有伺服器的名稱、IP位址、伺服器角色、版本資訊、服務狀態,以及完成所有必要連接埠的連線測試。等到這些基本資訊都掌握了,再開始逐步進行各項細部配置的調查,這包括Send/Receive Connector、DAG、AntiSpam、Compliance、Transport Rules等等。

接下來,透過三大簡易步驟來取得Exchange的基本資訊與狀態並進行測試。如圖1所示,透過以下命令參數來查看目前有架構下所有的Exchange Server完整主機名稱(FQDN)、伺服器角色、版本資訊,以及是否為Edge Server類型:

Get-ExchangeServer | Select FQDN, ServerRole,AdminDisplayVersion,Is EdgeServer

圖1  查看所有Exchange版本與角色。

若想得知每一台Exchange Server的版本,在Select命令後添加Edition欄位,即可得知各個伺服器是標準版還是企業版。

接下來,在目前所連線登入的Exchange Server主機上,如圖2所示執行以下PowerShell命令,查看本機所有Exchange服務的執行狀態:

Get-Service -Name *Exchange* | Select Status, DisplayName | Sort Status | FT -Auto

圖2  檢查本機Exchange服務狀態。

若發現有必要啟動的服務尚未啟動,可以透過Start-Service命令來啟動選定的服務。

但如果只是要顯示所有已啟動的Exchange相關服務,則在此命令範例中加入「| Where-Object {$_.Status -eq "Running"}」參數設定,來取代「| Sort Status」參數設定。

如圖3所示,接著執行以下的命令參數來測試選定的主機與連接埠是否能夠正常連線:

Test-NetConnection ex01.lab04.com -Port 25 -InformationLevel "Detailed"

圖3  測試主機連接埠。

執行之後,除了可以從結果顯示中得知是否成功連線(TcpTestSucceeded=True)外,還能夠知道測試連線所使用的網路、來源位址、目的地位址以及路由節點等資訊。

另外,若要診斷主機與主機之間的路由路徑,則執行以下命令參數:

Test-NetConnection -ComputerName edge.lab04.com -DiagnoseRouting -InformationLevel Detailed

建立信箱

在Exchange Server的信箱管理方法中,除了透過Exchange系統管理中心網站來單筆新增外,也可以透過PowerShell命令結合CSV文字檔案的方式,來批次建立大量的信箱。

然而,如果已經決心使用PowerShell來管理Exchange Server的運行,就算是單筆的信箱新增,建議也透過PowerShell命令的方式來完成操作,如此一來,往後若需要執行類似的操作時,只要把所分類記錄好的命令參數,在快速完成修改之後,到EMS的命令介面中貼上來執行即可。

如圖4所示,便是依序透過執行兩道命令參數,分別完成設定人員帳號的密碼以及建立信箱,並且將此帳號存放在選定的組織單位內:

$password = Read-Host“Enter password”-AsSecureString New-Mailbox -UserPrincipalName peterlin@lab04.com -Alias pterlin -Name peterlin -OrganizationalUnit “總務組”-Password $password -FirstName Peter -LastName Lin -DisplayName“林彼德”-ResetPa sswordOnNextLogon $true

圖4  新增信箱。

成功建立帳號與信箱後,此帳號首次登入時將會被系統強制要求修改密碼。

除了人員信箱之外,也可以透過命令參數來建立可讓多位人員一起存取的共用信箱。在以下的範例中,便是新增一個名為「IT Department」的共用信箱,並且將「傳送為」及「完整存取權」的成員,分別選定為現行的IT和SI安全性群組:

New-Mailbox -Shared -Name“IT Department”-DisplayName “資訊組” -Alias Sales | Set-Mailbox -GrantSendOnBehalfTo IT | Add- MailboxPermission -User SI -Access Rights FullAccess -InheritanceTy pe All

如此一來,這個群組的所有人員便可以對於此共用信箱進行完整權限的存取,並且能夠使用業務部門的名義來傳遞、轉寄或回覆Email。

查詢信箱最近登入的時間

無論是在Compliance還是Security層面的管理需求,常會聽到IT人員詢問,如何得知所有人員或選定的人員最近一次登入的時間,以及所登入的Exchange Server是哪一台。

如圖5所示,便是一個典型的PowerShell命令查詢範例,其執行結果將會顯示所有人員信箱與共用信箱最近一次的登入時間,以及所登入的Exchange Server,並且依照降冪排序的方式來加以呈現:

Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox, SharedMailbox | Get-Mailbox Statistics | Sort-Object Lastlogon time -Descending | Select-Object DisplayName,MailboxTypeDetail,Last LogonTime,ServerName

圖5  查看最後登入時間。

人員信箱配額管理

儘管目前的HDD與SSD售價都很便宜且容量越做越大,但無論是人員信箱還是共用信箱,都應該強制做好配額的管理,否則當信箱所在的資料庫檔案越來越大時,不僅影響用戶的存取效能,也可能會間接影響到位於相同儲存區內其他信箱資料庫的效能。除此之外,也會讓信箱資料庫備份任務的時間持續攀升,進而影響IT整體維運的品質。

想要有效率地管理好Exchange Server架構下的信箱配額,最基本的是先做好信箱的分類。

例如,先依據部門或職級來劃分信箱所屬的資料庫,再根據不同的信箱資料庫來設定配額大小。

在如圖6所示的命令參數範例中,便是設定了「IT Mailbox Database」信箱資料庫的警示配額大小、禁止傳送配額大小,以及禁止傳送與接收Email的配額大小:

Set-MailboxDatabase -Identity "IT Mailbox Database" -IssueWarning Quota 2.8GB -ProhibitSendQuota 3GB -ProhibitSendReceiveQuota 3.3GB

圖6  設定上層信箱資料庫配額。

接著,再執行以下命令參數來查看前面的信箱資料庫配額設定是否生效:

Get-MailboxDatabase -Identity "IT Mailbox Database" | FL IssueWarni ngQuota,ProhibitSendQuota,Prohibi tSendReceiveQuota

一旦確認設定成功,之後所有存放於此資料庫的信箱預設便會直接採用此項設定值。

此外,在一個信箱資料庫中的所有信箱裡,難免會有一些需要額外獨立設定配額的信箱,例如某位人員的信箱配額需要特別增加或減少,這時候就可以參考圖7所示執行以下的命令將選定的人員(例如JoviKu)設定配額,並且將-UseDatabaseQuotaDefaults參數值設定為「$False」,以表示不採用資料庫層級的配額設定:

Set-Mailbox -Identity JoviKu -IssueWarningQuota 8GB -Prohibit SendQuota 10GB -ProhibitSend ReceiveQuota 12GB -UseDatabase QuotaDefaults $False

圖7  設定人員信箱配額。

同樣地,在完成該人員信箱的配額設定後,執行以下命令來查看是否已經生效:

Get-Mailbox -Identity JoviKu | FL IssueWarningQuota,ProhibitSendQu ota,ProhibitSendReceiveQuota,UseD atabaseQuotaDefaults

完成信箱配額的設定後,後續除了對於即將超出或已超出配額的用戶,可以在自己的Outlook或OWA中看到配額的警示通知外,管理人員也能夠在伺服端,如圖8所示透過執行下列命令來查看所有信箱的儲存限制狀態:

Get-Mailbox | Get-MailboxStatistics | Select-Object DisplayName,TotalIt emSize,StorageLimitStatus

圖8  無法顯示儲存限制狀態。

不過奇怪的是,為何StorageLimitStatus這個欄位是空值呢?上述問題究竟是什麼原因造成的呢?其實它並不是一個系統Bug,而是打從Exchange Server 2013版本開始,資訊儲存庫(Information Store)便不會快取信箱配額的值,使得資訊儲存庫需要經常呼叫Active Directory來取得各個信箱的配額,如此一來,將造成Exchange Server在運行發生效能方面的影響,因此目前在系統預設的狀態下,已不會自動取得以及顯示有關於StorageLimitStatus欄位值。完整說明可參閱以下的Microsoft支援網站說明。

‧官網Exchange Server空白Storage LimitStatus欄位說明網頁: https://support.microsoft.com/en-us/help/2819389/empty-storagelimitstatus-field-when-you-run-the-get-mailboxstatistics

如果想要徹底解決上述的問題,除了可以改用EAC介面來查看相關數據外,更好的做法是到Technet網站下載一個由Microsoft MVP所撰寫的PowerShell Script(Get-MyMailboxStatistics.ps1)即可解決。此程式已在Windows Server 2019搭配Exchange Server 2019的操作環境中執行過沒有問題,因此可以安心使用。

‧免費Get-MyMailboxStatistics.ps1下載網址: https://gallery.technet.microsoft.com/office/Get-MyMailboxStatistics-a-858d1efa

成功下載Get-MyMailboxStatistics.ps1程式後,如圖9所示依序執行以下命令參數,即可查看到StorageLimitStatus的值:

$m= Get-Mailbox 或 $m= Get-Mailbox -Database "IT Mailbox Database"   $m | .\Get-MyMailboxStatistics. ps1 | FT -AutoSize DisplayName,To talItemSize,StorageLimitStatus,Da tabaseName

圖9  查看信箱大小與儲存限制狀態。

在此,可以發現範例中所有的信箱皆是顯示「BelowLimit」,表示這一些信箱的使用量皆尚未超過配額大小。

檢查信箱的使用量

無論Exchange Server發展到哪個版本,對於管理員來說,在平日的維護任務中,都會想知道每個信箱的使用量大小,以便主動通知那些已占用太多可用空間的人員信箱,能夠在系統發出警示通知前,先自行完成郵件的清理。

如圖10所示,只要透過以下命令參數的執行,就可以查看到選定伺服器中的所有信箱的名稱、郵件數量、全部郵件大小、已刪除的郵件大小,以及相對存放的信箱資料庫名稱:

Get-Mailbox -Server EX01 | Get- MailboxStatistics | Select Display Name,ItemCount,TotalItemSize,Total DeletedItemSize,DatabaseName | FT

圖10  查看信箱使用量。

已刪除郵件與信箱的保留期限

對於Exchange用戶而言,在管理個人信箱的過程中,難免會誤刪了重要的郵件。對於管理員來說,也可能在管理眾多的信箱過程中,誤刪人員、共用信箱或是資源信箱。為了讓已被誤刪的郵件和信箱,都能夠還有機會進行復原,Exchange Server提供了刪除後的保留時間,只要在尚未超出保留時間的期限內,仍然都可以復原郵件或信箱。已刪除郵件的保留時間預設為14天,而已刪除的信箱保留時間則預設是30天。

如圖11所示,可以透過以下命令參數同時完成修改已刪除郵件及已刪除信箱的保留時間,例如分別修改為45天和60天。完成修改後,還可以立即查看修改後的設定是否已經生效:

圖11  修改已刪除郵件與信箱的保留期限。

Set-MailboxDatabase -Name "IT Mailbox Database" -Deleted ItemRetention 45.00:00:00 -MailboxRetention 60.00:00:00 Get-MailboxDatabase -Name "IT Mailbox Database" | FL DeletedIte mRetention, MailboxRetention

管理信箱的權限

幾乎只要是有一定規模的公司,在組織人員的編制中,都會讓各個部門擁有助理人員,其中包括了大家常聽到的秘書這一項職務。而在他們的工作內容中,往往需要協助部門、業務人員或主管來管理行事曆、連絡人、郵件,甚至於管理整個個人信箱或共用信箱的需要。

Exchange管理員除了可以透過EAC網站的「信箱」頁面,開啟如圖12所示的信箱屬性來設定信箱委派的「完整存取權」外,也可直接在EMS介面中參考執行以下命令參數來賦予JoviKu用戶對於Administrator信箱擁有完整存取權限:

Add-MailboxPermission -Identity "Administrator" -User "JoviKu" -AccessRights FullAccess -Inherit anceType All

圖12  信箱委派設定。

其實關於權限的委派,除了有完整存取權限可以授予外,也可設定用戶僅能變更擁有者(ChangeOwner)、變更權限(ChangePermission)、刪除項目(DeleteItem)、外部帳號(ExternalAccount)或是讀取權限(ReadPermission)。 如果想要知道某一位人員(例如Administrator)對於某一個選定信箱(例如HRAdmin)的存取權限,如圖13所示可透過執行以下命令參數進行查看:

圖13  查看信箱存取權限清單。

Get-Mailbox HRAdmin | Get-Mailbox Permission -User Administrator | FL

管理行事曆與連絡人的存取權限

除了整個信箱權限的授予外,對於一般用戶來說,若想要共用選定的行事曆或連絡人,讓選定的人員能夠依據所授予的權限來存取,只要直接在自己的Outlook或OWA進行設定即可。

如果想交由管理員來設定,則必須從EMS的命令介面操作中完成。如圖14所示,便是透過執行下列的命令參數,將JoviKu行事曆的作者權限授予給SandyChen用戶,然後再查看目前該行事曆的權限配置清單:

Add-MailboxFolderPermission   -Identity JoviKu:\"行事曆"   -AccessRights AUTHOR -User SandyChen Get-MailboxFolderPermission   -Identity JoviKu:\"行事曆" | Select User, AccessRights, Deny

圖14  新增行事曆存取權限。

接著,透過執行兩道命令來完成JoviKu連絡人權限的設定,分別將作者權限授予給用戶SandyChen,以及將檢閱者權限授予給用戶JaneKu:

Add-MailboxFolderPermission   -Identity JoviKu:\"連絡人"   -AccessRights AUTHOR -User SandyChen Add-MailboxFolderPermission   -Identity JoviKu:\"連絡人"   -AccessRights REVIEWER -User JaneKu

不過,如圖15所示,為何在執行將檢閱者權限授予用戶JaneKu時出現錯誤呢?從錯誤訊息中可以得知,主要原因是JoviKu連絡人權限其實早已經授權給JaneKu用戶,因此現在必須改為執行以下命令來修改所授予的權限設定即可:

Set-MailboxFolderPermission   -Identity JoviKu:\"連絡人"   -AccessRights REVIEWER -User JaneKu

圖15  新增與修改連絡人存取權限。

同樣地,在完成連絡人權限的新增或修改後,透過執行以下命令參數來查看權限清單:

Get-MailboxFolderPermission   -Identity JoviKu:\"連絡人" | Select User, AccessRights, Deny

無論是上述的行事曆,還是連絡人或是其他的信箱資料夾,除了有作者(Author)與檢閱者(Reviewer)的角色權限可授予外,還可以選擇配置的角色權限有投稿者(Contributor)、編輯者(Editor)、非編輯作者(NonEditingAuthor)、擁有者(Owner)、發佈編輯者(PublishingEditor)、發行作者(PublishingAuthor)等等。此外,如果在Outlook中進行資料夾的權限配置,如圖16所示,當選取不同的權限等級(或稱角色)時,系統會自動選取相對應的個別權限設定。此外,若資料夾類型屬於行事曆,則還有額外兩種權限等級可以選擇,分別是「空閒/忙碌時間(AvailabilityOnly)」以及「空嫌忙碌時間、主旨、地點(LimitedDetails)」。

圖16  進行Outlook行事曆權限設定。

管理資源預約特權

管理企業資源預約,不外乎是會議室、電腦相關設備以及公務車,其中會議室是最常見的重要資源,因為無論是與內部人員還是客戶、廠商的開會,都需要使用到會議室,唯有採用預約管理的機制,才能夠避免發生租借的衝突。

傳統會議室預約的方式是採用紙本登記方式,既不環保也沒有效率,且往往會經常出現人為的錯誤。如今有了Exchange Server 2019,無論是上述何種資源的預約管理,都只要預先在「Exchange系統管理中心」的「收件者」→「資源」頁面中完成新增,即可馬上使用。

值得注意的是,有關「會議室」資源的建立,還可以設定「容量」大小,也就是會議室所能夠容納的人數限制,一旦預約的人員所相對邀請的會議人數超過了此容量限制,系統便會出現提示訊息來通知用戶。

但是,有一些進階設定無法在「Exchange系統管理中心」的操作介面中完成,像是如圖17所示的會議室預約特權設定便是其中一項。只要透過執行以下的命令,便可讓「會議室1」的資源僅能夠被選定的JoviKu和SandyChen兩位用戶進行預約:

Set-CalendarProcessing -Identity "會議室1" -AutomateProcessing AutoAc cept -BookInPolicy JoviKu, SandyChen -AllBookInPolicy $False

圖17  會議室預約特權設定。

如果此會議室的預約用戶是非選定的人員時,該用戶在送出預約申請時,便會立即收到如圖18所示的拒絕通知。

圖18  系統拒絕會議室的預約。

關於會議室資源的自動同意或拒絕預約的設定,若不採用特權人員的預約方式,也可以改成由選定的人員進行審核。只要加入「-ResourceDelegates」參數,並輸入負責審核的人員名稱即可。進一步若想要修改會議室信箱的擁有人,則執行像是「Add-MailboxPermission -Identity "會議室" -Owner "JoviKu"」的命令參數。

由管理員代為設定用戶OOF

Outlook(OWA)結合Exchange Server的不在辦公室(Out of Office)功能,是企業用戶最常使用的功能之一,因為它可以在自己不在辦公室的期間,自動回覆預先設定好的訊息通知給來信的連絡人,而且能夠針對來自內部及外部的連絡人,設定不同的訊息回覆內容,以便讓寄件人可以知道自己何時會回到辦公室,或是暫時可找誰來處理眼前的問題與需求。

雖然此功能在大多數的情境下都是由用戶自行設定,但在必要的時候,也是可以由Exchange管理員透過EMS命令介面來代為設定。如圖19所示,以下命令參數便是由Exchange管理員來協助用戶JoviKu完成不在辦公室的自動回覆設定:

Set-MailboxAutoReplyConfiguration -Identity JoviKu -AutoReplyState Scheduled -StartTime "9/9/2019 09:00:00" -EndTime "9/11/2019 18:00:00" -InternalMessage " 我休假不在的這段期間請找Sandy協助"   -ExternalMessage "您的來信將有我的 助理珊迪協助,謝謝."

圖19  代為設定人員OOF。

值得注意的是,在此範例中還有設定起訖日期與時間,一旦排程的日期時間到期後,便會自動關閉此功能。

如果用戶不想要在選定的排程時間裡設定自動回覆,可以將「-AutoReplyState」的參數值改為「Enabled」,等到該人員回到辦公室後,再將此參數值改回預設的「Disable」即可,否則自動回復功能仍會持續啟用。

如圖20所示,是用戶透過OWA的「選項」→「郵件」→「自動處理」→「自動回覆」頁面中,所看到Exchange管理員代為設定的結果,換句話說,用戶一樣可以自行在此頁面中修改或關閉此項設定。

圖20  自動回覆設定。

在完成自動回覆設定後,只要起始的日期時間到來,如果內部有其他Outlook或OWA用戶要寄送Email給這位用戶時,在Email尚未傳送出去之前,如圖21所示,便會看到系統所出現的自動回覆提示訊息。如果是外部的連絡人,則會在Email發送之後立即收到自動回覆的Email通知。

圖21  自動回覆訊息提示。

郵件發送追蹤

關於郵件追蹤管理的最佳解決方案,嚴格來說是採用第三方的獨立封存主機方案,由於它是專責的封存主機,因此不僅不會影響Exchange Server的運作效能,還提供了友善的操作介面,讓所有被授權的用戶都能夠透過網頁瀏覽器來搜索選定條件的Email,例如內部與內部以及內部與外部的Email完整傳送記錄。

雖然第三方的封存主機方案相當不錯,但終究得增加不少的IT採購預算。為此,IT部門可以選擇Exchange內建的郵件追蹤功能,並搭配郵件保留、封存等功能來使用,一樣可以提供相當實用的管理方案。如圖22所示,可透過以下命令參數來搜索選定寄件者與日期時間的Email發送記錄:

Get-MessageTrackingLog -Start "8/29/2019 8:00AM" -Resultsize unlimited | where-object {$_. Sender -like '*lab04.com'}

圖22  追蹤選定的寄件者。

如果想要讓搜索的郵件追蹤記錄輸出至選定的HTML檔案,則可以參考以下的命令參數:

Get-MessageTrackingLog -Start "7/10/2019 8:00AM" -End "9/10/2019 6:00PM" | ConvertTo-Html -Property ClientIp,ClientHostname,ServerHos tname,Sender,Recipients,MessageSub ject | Out-File "C:\HTML\message- track.html"

一旦執行成功,便可以開啟如圖23所示的網頁內容。

圖23  輸出郵件追蹤報表。

此外,還可以進一步到以下的Technet網站,免費下載由其他專家所撰寫的PowerShell Script。關於此MessageTrackingLogGUI.ps1程式,目前已通過筆者於Exchange Server 2019在Windows Server 2019 Server Core執行環境中的測試。如圖24所示,它提供了專屬的視窗操作介面,因此使用起來將更加方便。

圖24  免費郵件追蹤工具。

‧其他專家所撰寫PowerShell Script的下載網址:https://gallery.technet.microsoft.com/Exchange-2013-Message-875b3eeb

監視Exchange磁碟空間

在之前舊版的Exchange 2013 Service Pack 1中,Exchange會監視所有本機磁碟區的可用空間大小,而在Exchange 2016和Exchange 2019版本中,則僅會監視Exchange資料庫和記錄檔所在的磁碟區,其中低磁碟區空間監視器的預設臨界值為180GB。

在Exchange Server 2019的EMS命令介面中,如圖25所示執行以下的命令參數後,如果在「AlertValue」欄位中出現了「Unhealthy」,即表示相對信箱資料庫的所在磁碟剩餘空間已經低於180GB:

Get-ExchangeServer EX01 | Get- Serverhealth -HealthSet Mailbox Space | ? AlertValue -ne Healthy | FT –autosize

圖25  檢查信箱資料庫可用空間狀態。

除了可透過Exchange的PowerShell命令方式來檢查信箱資料庫可用空間的狀態外,也可以使用Windows內建的事件檢視器。先開啟「Application and Services Logs」→「Microsoft」→「Exchange」→「Managed Availability」→「Monitoring」節點頁面,然後如圖26所示找到「Event ID=4」和「Level=Error」的低磁碟空間錯誤事件,內容中也會說明目前的磁碟剩餘空間以及所設定的警示空間大小數據。

圖26  開啟事件檢視器。

如果想要修改系統預設臨界值180GB的設定,只要先執行「Regedit.exe」開啟登錄編輯器,然後點選至以下的節點位置並新增DWROD(32)的Value,如圖27所示,其中「Value name」輸入「SpaceMonitorLowSpaceThresholdInMB」,而「Base」則選取「Decimal」以及在「Value data」欄位中輸入所要設定的臨界值即可,最後按下〔OK〕按鈕。完成新增之後,必須重新啟動「Microsoft Exchange DAG Management」服務,才能夠讓其設定生效:

HKEY_LOCAL_MACHINE\Software\ Microsoft\ExchangeServer\v15\ Replay\Parameters

圖27  編輯DWORD設定。

關於上述針對登錄編輯器的圖形介面設定,如圖28所示,其實也可以透過以下的命令參數來新增:

New-ItemProperty "HKLM:Software\ Microsoft\Exchange Server\v15\ Replay\Parameters\" -Name "Space Monitor LowSpaceThres holdInMB" -Value 80000 -Property Type "DWORD"

圖28  以命令參數設定登錄值。

完成登錄設定後,緊接著執行以下命令,就可以讓其設定立即生效:

Restart-Service -DisplayName "Microsoft Exchange DAG Management"

監視所有磁碟空間

如果不只是想監視Exchange Server資料庫與交易記錄檔所在的磁碟空間,而是要監視本機所有的磁碟空間,此時除了考慮選擇功能較強大的第三方監視方案外,也可以選擇簡易型的內建「效能監視器」來達成此任務。

如圖29所示,在「Computer Management」介面中,展開至「Performance」→「Data Collect Sets」→「User Defined」節點,然後按下滑鼠右鍵,再依序點選快速選單中的【New】→【Data Collector Set】功能,準備進行磁碟空間資料的收集設定。

圖29  電腦管理介面。

接著,必須為這個新的資料收集設定一個識別名稱,並勾選「Create manually (Advanced)」設定,然後按下〔Next〕按鈕。在如圖30所示的頁面中,分別有「Create data logs」和「Performance Counter Alert」可以選擇,這裡選擇後者,表示將從相關效能計數器的監測中,來得知所有磁碟的空間大小數據。按下〔Next〕按鈕,繼續後面的設定。

圖30  建立新資料收集。

如圖31所示,首先必須在「Available counters」窗格中,找到「%Free Space」計數器。選定後,在其下方的「Instance of selected object」窗格內,就會看到目前所有可以監視剩餘空間的磁碟代號。若想要監視所有磁碟剩餘空間的變化,直接選取「_Total」並按下〔Add>>〕按鈕即可。最後,按下〔OK〕按鈕。

圖31  監視邏輯磁碟空間。

接著,為每一個想要監視的磁碟設定觸發警示的百分比。舉例來說,如果希望在C磁碟的剩餘空間低於30%時便產生事件記錄(Event),如圖32所示,在「Alert when」下拉選單中選擇【Below】,並在「Limit」欄位中輸入「30」即可。此外,若想添加更多磁碟的剩餘空間監視,按下〔Add〕按鈕再來挑選即可。反之,則選定現行的磁碟並按下〔Remove〕按鈕完成移除。

圖32  進行磁碟空間警示設定。

最後在「Create the data collector set ?」頁面中選擇「Save and close」並按下〔Finish〕按鈕。回到剛剛所建立的資料收集設定頁面,選取後按下滑鼠右鍵,接著點選快速選單中的【Properties】來開啟「Alert Action」頁面。如圖33所示,先勾選「Log an entry in the application event log」設定,表示對於所觸發的事件將產生在Windows的應用程式事件記錄中。

圖33  警示動作設定。

最後,在「Alert Task」頁面的「Run this task when an alert is triggered」欄位中,輸入當此警示發生之時所要同時觸發的工作名稱(中英文皆可)。這裡所說的工作名稱,其實是指「Task Scheduler」管理介面中所建立的工作,也就是後續要用來執行Email發送程式的Windows內建工具。

發送磁碟空間警示通知

從「Server Manager」介面的「Tools」選單中點選【Task Scheduler】。開啟之後,在右側的「Actions」窗格中,點選「Create Task」來開啟如圖34所示的設定頁面。首先必須在「Name」欄位中輸入與前面「Alert Task」中相同的名稱,然後在下方的「Security options」區域內選取「Run whether user is logged on or not」,以及勾選「Run with highest privileges」設定。

圖34  建立工作。

在「Actions」頁面中,如圖35所示,按下〔New〕按鈕來新增所要執行的動作。開啟後,動作類型必須選擇「Start a program」,而所執行的程式輸入「Powershell」,參數部分則可以輸入像是「-file "C:\Tools\Sendmail.ps1"」。其中Sendmail.ps1是筆者預先寫好的一個簡單Script,其內容中的命令參數如下,用途便在於當效能監視器的Alert Task事件產生時,直接觸發此工作並執行此Sendmail.ps1,以完成磁碟空間警示的Email通知:

Send-MailMessage -To joviku @lab04.com -Subject "EX02磁碟空間 警示Email通知" -Body "請注意!EX02 磁碟空間目前已剩下不到30%的可用空間 " -SmtpServer 127.0.0.1 -From administrator@lab04.com -Encoding  Unicode

圖35  工作動作設定。
圖說

圖36所示便是透過效能監視器的磁碟空間計數器,所觸發之磁碟空間警示的郵件通知範例。若想要在郵件內容中顯示各個磁碟目前的剩餘空間等資訊,必須進一步改寫發送郵件的Script。

圖36  出現Email警示通知。

結語

儘管熟悉PowerShell命令的IT人員能夠讓Exchange Server的維護管理更有效率,但這終究是得投入許多時間的實戰學習才能夠養成,因此Microsoft應該在PowerShell中導入AI人工智慧的技術,讓IT人員或進階的用戶能夠在看似難以親近的命令介面中,藉由AI的引導迅速輸入所需要的命令和參數,或是直接建議各種命令參數的參考,讓操作人員能夠快速選擇,甚至可以在執行前自動預覽可能的執行結果,而不是等到命令或參數輸入失敗時,才再以人工的方式進行除錯,或者收拾已經難以挽回的執行結果。無論如何,任何IT應用在結合AI的運作下,不應該只是著力於客戶端的發展,而是應該也應用於強化伺服端的維運,這樣IT人員才能夠更輕易地迅速解決各種突如其來的意外狀況。

<本文作者:顧武雄,Microsoft MVP 2004-2016、MCITP與MCTS認證專家、台灣微軟Technet、TechDays、Webcast、MVA特約資深顧問講師、VMware vExpert 2016-217、IBM Unified Communications/Notes/Domino/Connections Certified。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!