前言

身為一個管理與維護 Exchange Online 維運人員,你可能會遭遇下列需求
  1. 時區、語言設定問題:隨著公司員工越來越多,你會想要把新建立的信箱作一個預設值,讓時區與語言設定一致
  2. 公司擔心重要信件資訊外流,往往希望將所有信箱 Pop3 與 Imap 的功能關閉
倘若公司員工有數千人,每個月需要設定數十次,透過介面逐一設定有些耗時費力,本篇文章將簡單介紹如何透過 Powershell Command 設定,若有任何錯誤或建議,請各位前輩不吝提出,謝謝。
POP 與 IMAP 為郵件服務,提供使用者透過其他裝置或服務可以下載或檢視郵件的功能,其差異在於 POP 會自動下載郵件,並將信箱內的郵件清空; IMAP 則是提供各裝置上電子郵件瀏覽功能,而不下載,當你點開郵件後才會進行下載。



介紹

本篇文章使用 PowerShell Core 執行,若您想要知道怎麼登入 Exchange Online,請參考 "如何透過 Powershell Core 登入 Exchange Online"

在 Exchange Online 中,時區、語言、POP 與 IMAP 的內容都存在 RegionalConfiguration 這個屬性內,你可以透過 Get-MailboxRegionalConfiguration 指令查詢信箱設定
Get-MailboxRegionalConfiguration -identity ChengTingHsieh


時區與語言的設定相當簡單,透過下列指令即可設定
Set-MailboxRegionalConfiguration -Identity "ChengTingHsieh" -Language da-dk -DateFormat "dd-MM-yyyy" -TimeFormat "HH:mm"


若您想要大量的調整,你可以透過下列語法:取得所有使用者並設定,並且設定語言為台灣(繁體中文)、設定時區為台北時區
(Get-Mailbox -ResultSize unlimited | Set-MailboxRegionalConfiguration -Language zh-TW -LocalizeDefaultFolderName -TimeZone "Taipei Standard Time")
警告: 若信箱數量較多,可能會執行非常久且大量消耗 Exchange Online 資源,導致其他 powershell 執行緩慢或無法執行,請參考下面建議


POP 與 IMAP 語法設定語法如下
Set-CASMailbox -Identity "ChengTingHsieh"-PopEnabled:$False -ImapEnabled:$False


若您想要大量調整,你可以透過下列語法
(Get-Mailbox -ResultSize unlimited | Set-CASMailbox -PopEnabled:$False -ImapEnabled:$False)
警告: 若信箱數量較多,可能會執行非常久且大量消耗 Exchange Online 資源,導致其他 powershell 執行緩慢或無法執行


現在我們遇到一個難題,每天執行這些 Powershell 指令會導致效能問題,也可能遭遇指令跑不完而失敗的情況,該怎麼辦?
除了第一次建置時需要全面的設定,對於每天人員變動需要的更新,您只需要多設定一個時間即可,如:您只需要對於這3天內新建立的信箱/帳號進行設定即可,你可以參考這兩個屬性
  1. WhenMailBoxCreated: 信箱建立時間
  2. WhenCreated: AD 或 AAD 使用者建立時間
$Yesterday = (Get-Date).AddDays(-1)
Get-Mailbox -Filter "WhenMailBoxCreated -gt '$Yesterday'"
注意:若您作業系統非英文環境,Get-Date 取出的時間可能不被 Powershell 指令使用,請設定格式為 yyyy-MM-dd


那我們該如何取得三天內建立信箱的使用者? 只需要透過 Get-Date 語法取得3天前的時間即可 !!
$ThreeDaysAgo = (Get-Date).AddDays(-3)
Get-Mailbox -Filter "WhenMailBoxCreated -gt '$ThreeDaysAgo'" | Get-MailboxRegionalConfiguration  | where {$_.Language -NotMatch 'zh-TW' -or $_.TimeZone -NotMatch 'Taipei Standard Time'}

如此一來,你可以取得近期建立信箱的使用者,並且進行設定,完成一個簡單信箱預設值指令。現在你只需要 Powershell 指令檔案儲存成 ps1,加入windows 排程,每天可以省下逐一設定的時間。


參考資料

1. 尋找執行任何 Exchange 指令程式所需的權限 - Microsoft docs
2. How do I get a list of mailboxes that have changed in the last 30 days? - TechNet