PowerShell สำหรับ Admin Microsoft 365: คู่มือฉบับปฏิบัติจริงที่ต้องรู้ในปี 2026
ในยุคที่องค์กรไทยหันมาใช้ Microsoft 365 กันอย่างแพร่หลาย การบริหารจัดการระบบด้วยหน้าจอ GUI เพียงอย่างเดียวอาจไม่เพียงพออีกต่อไป โดยเฉพาะเมื่อต้องดูแล User หลักร้อยหรือหลักพันคน งานที่ดูเหมือนง่ายอย่างการ Reset Password หรือกำหนด License ให้ User ใหม่จำนวนมาก หากทำทีละคนผ่าน Admin Center ก็อาจกินเวลาเป็นชั่วโมง ซึ่งนั่นคือจุดที่ PowerShell เข้ามาเปลี่ยนเกมได้อย่างสิ้นเชิง
PowerShell ไม่ใช่เครื่องมือใหม่ แต่ในบริบทของ Microsoft 365 นั้น มันคือหัวใจสำคัญของการทำ Automation และ Bulk Management ที่ Admin มืออาชีพทุกคนควรเชี่ยวชาญ ไม่ว่าจะเป็นการจัดการ Azure Active Directory (Entra ID), Exchange Online, Teams, SharePoint Online หรือ Security & Compliance ล้วนทำได้ผ่าน PowerShell ทั้งสิ้น
บทความนี้รวบรวมความรู้และเคล็ดลับจากประสบการณ์จริงในการดูแลระบบ Microsoft 365 เพื่อให้ IT Admin ชาวไทยสามารถนำไปใช้งานได้จริงทันที ตั้งแต่การเริ่มต้น Connect ไปจนถึงการเขียน Script อัตโนมัติสำหรับงานประจำวัน
1. การเตรียมความพร้อมและ Connect กับ Microsoft 365
ก่อนเริ่มใช้งาน คุณต้องติดตั้ง Module ที่จำเป็นให้ครบถ้วน โดย Microsoft ได้รวม Module หลักไว้ใน Microsoft Graph PowerShell SDK ซึ่งเป็นมาตรฐานใหม่แทน Module เดิมอย่าง AzureAD และ MSOnline ที่กำลังจะ Deprecated
- ติดตั้ง Microsoft Graph SDK:
Install-Module Microsoft.Graph -Scope CurrentUser - ติดตั้ง Exchange Online Management:
Install-Module ExchangeOnlineManagement - ติดตั้ง Teams Module:
Install-Module MicrosoftTeams - ติดตั้ง SharePoint PnP:
Install-Module PnP.PowerShell - Connect กับ Microsoft Graph:
Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.ReadWrite.All"
สิ่งสำคัญที่ต้องระวังคือการกำหนด Scopes ให้เหมาะสมกับงานที่ต้องการทำ เพราะหากขอ Permission มากเกินไปโดยไม่จำเป็น อาจเป็นความเสี่ยงด้าน Security ขององค์กรได้
2. การจัดการ User และ License แบบ Bulk
งานที่ Admin ทำบ่อยที่สุดคือการสร้าง User ใหม่และกำหนด License ซึ่ง PowerShell ช่วยให้ทำได้พร้อมกันหลายคนในคราวเดียว
- ดึงรายชื่อ User ทั้งหมดพร้อม License:
Get-MgUser -All | Select-Object DisplayName, UserPrincipalName, AssignedLicenses - สร้าง User จาก CSV File: อ่านข้อมูลจาก CSV แล้ววนลูปสร้าง User ด้วย
New-MgUserได้ทีเดียวหลายร้อยคน - Assign License ให้ User: ใช้
Set-MgUserLicenseพร้อมระบุ SKU ID ของ License ที่ต้องการ - Disable User ที่ลาออก:
Update-MgUser -UserId "user@domain.com" -AccountEnabled $false - ตรวจสอบ User ที่ไม่มี License: เขียน Script กรองหา User ที่ AssignedLicenses เป็น Empty เพื่อตรวจสอบ Compliance
3. การจัดการ Exchange Online และกล่องจดหมาย
Exchange Online เป็นส่วนที่ต้องใช้ PowerShell บ่อยมาก เพราะมีฟีเจอร์หลายอย่างที่ GUI ใน Admin Center ยังทำไม่ได้หรือทำได้ไม่สะดวก
- Connect Exchange Online:
Connect-ExchangeOnline -UserPrincipalName admin@domain.com - ดูขนาด Mailbox ทุก User:
Get-EXOMailbox -ResultSize Unlimited | Get-EXOMailboxStatistics | Sort-Object TotalItemSize -Descending - ตั้งค่า Mailbox Forwarding: ใช้
Set-Mailboxเพื่อกำหนด ForwardingAddress หรือ ForwardingSMTPAddress - สร้าง Shared Mailbox:
New-Mailbox -Shared -Name "Support" -DisplayName "IT Support" -Alias "itsupport" - Export Mail Flow Rules: ดึง Transport Rule ทั้งหมดออกมาเป็น CSV เพื่อ Backup หรือ Audit
4. การจัดการ Microsoft Teams ด้วย PowerShell
ในองค์กรที่ใช้ Teams เป็นช่องทางสื่อสารหลัก การบริหาร Team และ Channel จำนวนมากผ่าน GUI อาจยุ่งยากมาก PowerShell ช่วยแก้ปัญหานี้ได้ดี
- ดูรายการ Teams ทั้งหมดในองค์กร:
Get-Team | Select-Object DisplayName, Visibility, Archived - สร้าง Team พร้อม Channel จาก Template: เขียน Script สร้าง Team และ Channel มาตรฐานสำหรับโปรเจกต์ใหม่ทุกครั้ง
- เพิ่ม Member หลายคนพร้อมกัน: อ่านรายชื่อจาก CSV แล้ว Add เข้า Team ด้วย
Add-TeamUser - Archive Teams ที่ไม่ได้ใช้:
Set-TeamArchivedState -GroupId "GUID" -Archived $true - ตรวจสอบ External Users ใน Teams: ดึงรายชื่อ Guest ที่มีใน Teams ทั้งหมดเพื่อ Review สิทธิ์
5. Security และ Compliance Automation
งานด้าน Security ที่ Admin ต้องทำเป็นประจำ เช่น การตรวจสอบ Sign-in Logs หรือการ Monitor การเข้าถึงข้อมูล ก็สามารถทำอัตโนมัติได้ด้วย PowerShell
- ตรวจสอบ Risky Sign-ins: ใช้
Get-MgRiskyUserเพื่อดู User ที่มีความเสี่ยงจาก Identity Protection - ดู Audit Log กิจกรรมสำคัญ: ใช้
Search-UnifiedAuditLogใน Security & Compliance Module - ตรวจสอบ MFA Status ของ User ทุกคน: ดึงรายงาน MFA Registration เพื่อหา User ที่ยังไม่ได้ลงทะเบียน
- ตั้งค่า Conditional Access Policy: จัดการ Policy ผ่าน Microsoft Graph API ด้วย PowerShell
เคล็ดลับจากประสบการณ์จริง (Practical Tips)
- บันทึก Credential ด้วย Secret Store: ใช้
Microsoft.PowerShell.SecretManagementเก็บ Credential แทนการ Hard-code Password ใน Script เพื่อความปลอดภัย - ใช้ App Registration สำหรับ Automation: หากต้องการรัน Script อัตโนมัติโดยไม่มี Interactive Login ควรสร้าง Service Principal ใน Azure และใช้ Certificate Authentication
- ทดสอบ Script ด้วย -WhatIf ก่อนเสมอ: Cmdlet ส่วนใหญ่รองรับ Parameter
-WhatIfซึ่งจะแสดงผลลัพธ์โดยไม่ Execute จริง เหมาะมากสำหรับการทดสอบก่อน Production - เพิ่ม Error Handling ใน Script: ใช้
Try-Catch-Finallyเพื่อจัดการ Error และส่ง Alert ผ่าน Email หรือ Teams เมื่อเกิดปัญหา - ใช้ PowerShell 7.x แทน Windows PowerShell 5.1: PowerShell 7 มีประสิทธิภาพสูงกว่าและรองรับ Module ใหม่ได้ดีกว่า ควรอัปเกรดหากยังใช้เวอร์ชันเก่าอยู่
- เก็บ Log การรัน Script ทุกครั้ง: เขียน Output ลง Log File พร้อม Timestamp เพื่อใช้ Audit และ Troubleshoot ในภายหลัง
สรุป
PowerShell คือทักษะที่ขาดไม่ได้สำหรับ IT Admin ที่ดูแล Microsoft 365 ในยุคปัจจุบัน ไม่ว่าจะเป็นงาน Routine ประจำวันหรืองาน Bulk ขนาดใหญ่ การเรียนรู้ PowerShell จะช่วยประหยัดเวลาได้มหาศาลและลดโอกาสเกิดข้อผิดพลาดจากการทำงานด้วยมือ
ประเด็นสำคัญที่ควรจดจำคือการย้ายมาใช้ Microsoft Graph PowerShell SDK ให้เต็มรูปแบบ เนื่องจาก Microsoft ได้ประกาศ Deprecation ของ Module เดิมอย่าง AzureAD แล้ว รวมถึงการให้ความสำคัญกับ Security ในการเขียน Script ไม่ว่าจะเป็นการจัดการ Credential หรือการกำหนด Permission ให้เหมาะสม
Call to Action: เริ่มต้นด้วยการทดลองติดตั้ง Microsoft Graph SDK และลอง Connect กับ Tenant ของคุณวันนี้เลย หากมีคำถามหรืออยากแชร์ Script ที่ใช้งานอยู่ คอมเมนต์ไว้ด้านล่างได้เลยครับ แล้วติดตามบทความหน้าที่จะพูดถึงการสร้าง Automation Runbook ใน Azure Automation สำหรับ Microsoft 365 โดยเฉพาะ!
Comments
Post a Comment