(For Admins) PowerShell สำหรับ Enable/Disable Forward Mail, POP3, IMAP, SMTP, OWA และ Set Time Zone
Content difficulty — Technical
ตอนนี้ขอ share เรื่องการใช้ PowerShell ในการ Disable และ Enable ตัว Exchange Online นะครับ
Exchange Online PowerShell
Admin สามารถ Download Exchange Online Management Shell ที่
สำหรับ Admin ที่ทำ Multi-factor Authentication ให้ Download Module ver 2 ที่ https://www.powershellgallery.com/packages/ExchangeOnlineManagement
ทำการ install โดย Install-Module -Name ExchangeOnlineManagement
Connect-ExchangeOnline
Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
ส่วนคำสั่ง syntax เหมือน ver เก่า แต่เพิ่ม คำว่า “EXO” เข้าไปเช่น
Get-EXOMailbox เปลี่ยนจาก Get-Mailbox
Get-EXOCASMailbox เปลี่ยนจาก Get-CASMailbox
Script ข้างล่างนี้จะใช้ module เก่าอยู่ซึ่งก็ modify โดยการเพิ่ม EXO เข้าไปได้
Time Zone
การ Set mailbox timezone เพื่อให้ เป็น Time Zone เดียวกัน ซึ่ง ของบ้านเราจะตรงกับ ชื่อ SE Asia Standard Time ส่วนภูมิภาคอื่นดูได้จาก https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values
ระวังว่าองค์กรมี user ที่ทำงานต่างประเทศจะโดน effect ไปด้วย
Get-Mailbox -ResultSize Unlimited | Set-MailboxRegionalConfiguration -TimeZone “SE Asia Standard Time”
เพิ่ม date format ได้โดยเพิ่ม property ตัว -DateFormat โดย script นี้จะเป็น en-US support format ดังนี้ M/d/yyyy, M/d/yy, MM/dd/yy, MM/dd/yyyy, yy/MM/dd, yyyy-MM-dd และ dd-MMM-yy
POP 3
สามารถ Turnoff ได้ด้วย
Set-CASMailbox <Alias, Primary SMTP, or UPN> -PopEnabled $False
ถ้า จะ Enable ให้เปลี่ยน $False เป็น $True
ดูผลโดย Get-CASMailbox <Alias, Primary SMTP, or UPN>
สามารถใส่ Alias, Primary SMTP หรือ UPN ได้ เช่น user@m365.com จะมี alias คือ user และ UPN เป็น user@m365.com
IMAP
สามารถ Turnoff ได้ด้วย
Set-CASMailbox <Alias, Primary SMTP, or UPN> -ImapEnabled $False
ถ้า จะ Enable ให้เปลี่ยน $False เป็น $True
ดูผลโดย Get-CASMailbox <Alias, Primary SMTP, or UPN>
สามารถใส่ Alias, Primary SMTP หรือ UPN ได้ เช่น user@m365.com จะมี alias คือ user และ UPN เป็น user@m365.com
MAPI
สามารถ Turnoff ได้ด้วย
Set-CASMailbox <Alias, Primary SMTP, or UPN> -MAPIEnabled $False
ถ้า จะ Enable ให้เปลี่ยน $False เป็น $True
ดูผลโดย Get-CASMailbox <Alias, Primary SMTP, or UPN>
สามารถใส่ Alias, Primary SMTP หรือ UPN ได้ เช่น user@m365.com จะมี alias คือ user และ UPN เป็น user@m365.com
Outlook Web App (OWA)
สามารถ Turnoff ได้ด้วย
Set-CASMailbox <Alias, Primary SMTP, or UPN> -OWAEnabled $False
ถ้า จะ Enable ให้เปลี่ยน $False เป็น $True
ดูผลโดย Get-CASMailbox <Alias, Primary SMTP, or UPN>
สามารถใส่ Alias, Primary SMTP หรือ UPN ได้ เช่น user@m365.com จะมี alias คือ user และ UPN เป็น user@m365.com
Exchange ActiveSync
สามารถ Turnoff ได้ด้วย
Set-CASMailbox <Alias, Primary SMTP, or UPN> -ActiveSyncEnabled $False
ถ้า จะ Enable ให้เปลี่ยน $False เป็น $True
ดูผลโดย Get-CASMailbox <Alias, Primary SMTP, or UPN>
สามารถใส่ Alias, Primary SMTP หรือ UPN ได้ เช่น user@m365.com จะมี alias คือ user และ UPN เป็น user@m365.com
Forwarding
Set-Mailbox -Identity “mail หรือ display name” -ForwardingSMTPAddress “mailที่จะforward”
ดูผลโดย
Get-Mailbox -Identity “mail หรือ display name” | format-list ForwardingSmtpAddress
สามารถเพิ่ม properties ของ –DeliverToMailboxAndForward $True ได้เพื่อส่งเข้า inbox ตัวเองด้วย ดูผลโดย Get-Mailbox -Identity “mail หรือ display name” | format-list ForwardingSmtpAddress, DeliverToMailboxAndForward
ในกรณีส่ง forward หลายคนอาจจะใส่เป็น Distribution list ได้ หรือ ถ้าเป็น email นอกให้สร้าง Office 365 Group แล้ว set ตัว -ForwardingSmtpAddress ไปที่ Office 365 Group address นั้นแทน
Bulk Situation
สำหรับการ Add ที่ละหลายๆ user ก็สามารถทำได้เช่นกัน ให้ทำการเลือก domain ที่ต้องการ export ก่อน
PowerShell Script ข้างล่างนี้จะผลต่อ user ทุกคนที่มี License ภายใต้ Domain ที่เราเลือก
ใส่ domain ที่ต้องการใน $Domain
$Domain = “domainหลัง@”
หลังจากนั้น ใช้ script เพื่อ export เป็น .csv ไปที่ Drive C (แล้ว sign in admin account)
Connect-MsolService
Step นี้เราสามารถ remove บาง user ออก หรือใน กรณี ที่ user มีเยอะเกินไป สามารถ แบ่งไว้ file อื่นได้ เช่น LicensedUser2.csv, LicensedUser3.csv
แนะนำถ้า user เยอะให้แยกไฟล์ๆ ละไม่เกิน 500 users
Disable POP 3, IMAP, MAPI, OWA และ Exchange ActiveSync เป็น Bulk
ทำการ run script ด้านล่างเพื่อ ปิด feature กับ user ใน file UsersLicensed.csv ถ้ามีหลายไฟล์จะ run ไฟล์อื่นก็แก้ชื่อไฟล์ตรง Import-CSV C:\UsersLicensed.csv
Import-CSV C:\UsersLicensed.csv |%{Set-CASMailbox $_.UserPrincipalName -PopEnabled $False -ImapEnabled $False -MAPIEnabled $False -OWAEnabled $False -ActiveSyncEnabled $False}
สามารถเพิ่มลบ บางอันออกได้ ถ้าอยากปิดแค่บาง feature
ดูผลโดย
Import-CSV C:\UsersLicensed.csv |%{Get-CASMailbox $_.UserPrincipalName }| Select Identity, PopEnabled, ImapEnabled, MAPIEnabled, OWAEnabled, ActiveSyncEnabled | FT
Enable mail forwarding เป็น Bulk
Modify ตัว UsersLicensed.csv ที่ column ชื่อ smtptarget แต่ละอันว่าแต่ละเมลจะให้ forward ไปไหน
ถ้าใน smtptarget มี alias เหมือนกัน แค่คนละ domain สามารถใส่สูตร excel เพื่อ เติม domain ข้างหลังได้ =LEFT(A3,FIND(“@”,A3)-1) && “@mecth3.com” โดยแก้ @mecth3.com เป็น domain ที่ต้องการ
หรือจะ run script ตั้งแต่ ตอน export .csv ก็ได้โดย กำหนดให้ $smtp คือ domain ที่ forward ปลายทาง
$Domain = “M365x171520.onmicrosoft.com”
$smtptarget = “mecth3.com”
Get-MsolUser -DomainName $Domain -All |? {$_.UserType -eq “Member” -and $_.IsLicensed -eq “True”} | Select UserPrincipalName, @{l=“smtptarget”;e={ $_.UserPrincipalName.replace($Domain,$smtptarget)}} | Export-CSV C:\UsersLicensed.csv
ทำการ run script ด้านล่างเพื่อ Import .csv ไฟล์เราและ forward mail ตาม smtptarget นั้นที่ละ user
Import-CSV C:\UsersLicensed.csv | % { Set-Mailbox $_.UserPrincipalName -ForwardingSmtpAddress $_.smtptarget }
สามารถเพิ่ม properties ของ –DeliverToMailboxAndForward $True ได้เพื่อส่งเข้า inbox ตัวเองด้วย
ดูผลโดย
Import-CSV C:\UsersLicensed.csv |%{Get-Mailbox $_.UserPrincipalName } | Select UserPrincipalName, ForwardingSmtpAddress | FT
limit ให้โชว์ตามที่เราต้องการได้ในกรณีดูมากๆ ระบบจะแจ้งเตือน ให้ใส่ -ResultSize ตามด้วยขนาดจำนวนที่ต้องการ
Import-CSV C:\UsersLicensed.csv |%{Get-Mailbox $_.UserPrincipalName -ResultSize 100 }| Select UserPrincipalName, ForwardingSmtpAddress | FT