ใช้ PowerShell เพื่อสร้างรายงานเกี่ยวกับนโยบายของทีมที่กำหนดให้กับบัญชีผู้ใช้
ฉันมักถามว่าทำไมคอนโซลผู้ดูแลระบบ Microsoft 365 ละเว้นตัวเลือกการพิมพ์ ตัวอย่างเช่น ไปที่ส่วนผู้ใช้ที่ใช้งานอยู่ของศูนย์การจัดการ Microsoft 365 และค้นหาวิธีการพิมพ์รายชื่อผู้ใช้ ไม่มีเลย สิ่งที่มักจะมีคือตัวเลือกในการส่งออกข้อมูล (ผู้ใช้ในกรณีนี้) เป็นไฟล์ CSV
ฉันคิดว่ามีเหตุผลหลายประการที่ทำให้ Microsoft ใช้แนวทางนี้กับคอนโซลผู้ดูแลระบบ ขั้นแรก ข้อมูลหน้าคอนโซลสำหรับการแสดงผล เมื่อคุณย้ายไปที่ด้านล่างของรายการ จะมีข้อมูลเพิ่มเติมปรากฏขึ้นจนกว่าจะมีชุดที่สมบูรณ์ (ฉันไม่เคยลองสิ่งนี้กับผู้เช่าที่มีผู้ใช้ 50,000 คน แต่นั่นคือทฤษฎี) การใช้งานนี้สอดคล้องกับวิธีที่ Graph API ดึงข้อมูล ในผู้เช่ารายใหญ่ การเพจจะทำงานได้ดีกว่าการที่คุณถูกบังคับให้รอให้ข้อมูลทั้งหมดพร้อมใช้งาน ประการที่สอง ความพยายามทางวิศวกรรมในการปรับใช้และสนับสนุนตัวเลือกการพิมพ์ในคอนโซลผู้ดูแลระบบทั้งหมดอาจเป็นต้นทุนที่ Microsoft ต้องการหลีกเลี่ยง ประการที่สาม ตัวเลือกการส่งออกช่วยให้ผู้เช่าดาวน์โหลดข้อมูลและจัดรูปแบบตามความต้องการของตนเอง (ทุกองค์กรมีรูปแบบของตนเอง) สุดท้าย การเข้าถึงข้อมูลโดยทางโปรแกรมมักจะทำได้ผ่าน PowerShell หรือ Graph API โดยรวมแล้ว เป็นการยากที่จะบ่นมากเกินไปเกี่ยวกับการขาดการสนับสนุนการพิมพ์ในคอนโซลผู้ดูแลระบบ Microsoft 365
นโยบายของทีม
ซึ่งนำฉันมาสู่ Teams อย่างเรียบร้อยและคำขอเพื่อสร้างรายงานนโยบายที่กำหนดให้กับบัญชีผู้ใช้ ดังที่คุณทราบ Teams ชอบนโยบายเป็นพิเศษ การตรวจสอบล่าสุดเผยให้เห็นนโยบาย Teams 40 นโยบายที่แยกจากกันซึ่งสามารถกำหนดให้กับบัญชีได้ (มีนโยบาย 16 นโยบายให้แก้ไขผ่านศูนย์การจัดการ Teams) เว้นแต่จะเกี่ยวข้องกับระบบ Teams Phone (ซึ่งใช้นโยบายจำนวนมาก) ผู้ดูแลระบบ Teams โดยเฉลี่ยอาจโต้ตอบกับชุดต่อไปนี้:
- นโยบายการประชุม: ควบคุมความสามารถที่มีอยู่ในการประชุม Teams
- นโยบายการส่งข้อความ: ควบคุมความสามารถในการแชทและข้อความแชนเนลของ Teams
- นโยบายการตั้งค่าแอพ: ควบคุมแอพที่ปักหมุดไว้ที่แถบนำทางแอพและแอพที่ผู้ใช้สามารถติดตั้งได้
- นโยบายสิทธิ์ของแอป: ควบคุมชุดแอปที่พร้อมใช้งานสำหรับผู้ใช้ Teams
- นโยบายการเข้ารหัสที่ได้รับการปรับปรุง: ควบคุมความพร้อมใช้งานของการเข้ารหัสตั้งแต่ต้นทางถึงปลายทางของทีมในการเรียก 1:1
- นโยบายการจัดการการอัปเดต: ควบคุมว่าผู้ใช้สามารถเข้าถึงคุณสมบัติการแสดงตัวอย่างได้หรือไม่
- นโยบายช่อง: ควบคุมว่าผู้ใช้สามารถสร้างช่องส่วนตัวและช่องที่ใช้ร่วมกันใหม่ได้หรือไม่
- นโยบายคำติชม: ควบคุมว่าผู้ใช้จะได้รับแจ้งให้ส่งแบบสำรวจความคิดเห็นไปยัง Microsoft หรือไม่
- นโยบายการถ่ายทอดสด: ควบคุมวิธีที่ผู้ใช้สามารถสร้างการถ่ายทอดสดได้
เมื่อคำนึงถึงนโยบายชุดนี้ เราสามารถเขียน PowerShell เพื่อสร้างรายงานการกำหนดนโยบาย Teams ได้
การเข้ารหัสรายงาน
สคริปต์รายงานตรงไปตรงมามาก
- เชื่อมต่อกับโมดูล Microsoft Teams PowerShell เพื่อดึงข้อมูลเกี่ยวกับนโยบายที่กำหนดให้กับผู้ใช้
- เชื่อมต่อกับโมดูล PowerShell การจัดการ Exchange Online นี่คือการเชื่อมต่อทางเลือกที่ฉันใช้เพื่อดึงข้อมูลชื่อผู้เช่าสำหรับรายงานโดยใช้ cmdlet Get-OrganizationConfig คุณยังสามารถใช้ Get-AzureADTenantDetail cmdlet จากโมดูล Azure AD ได้ด้วย
- สำหรับผู้ใช้แต่ละราย ให้แยกการกำหนดนโยบายและอัปเดตออบเจ็กต์รายการ PowerShell ง่ายต่อการเพิ่มหรือลบการกำหนดนโยบายเพื่อปรับแต่งผลลัพธ์ หากใช้นโยบายเริ่มต้น เราจะส่งออก "ค่าเริ่มต้นของผู้เช่า" (คุณสามารถเลือกชื่ออื่นได้หากต้องการ) มิฉะนั้นสคริปต์จะแทรกชื่อของนโยบายที่กำหนด
- เมื่อผู้ใช้ทั้งหมดได้รับการประมวลผล ให้ใช้ข้อมูลรายการและโค้ด HTML บางส่วนเพื่อสร้างไฟล์ HTML
- สร้างไฟล์ CSV โดยใช้ข้อมูลรายงานเพื่อให้วิเคราะห์งานได้ง่าย
- เสร็จสิ้นโดยการรายงานความสำเร็จและชื่อของไฟล์ที่สร้างขึ้น
รูปที่ 1 แสดงตัวอย่างรายงาน ดังที่คุณเห็น รายงานแสดงรายการการมอบหมายสำหรับนโยบายเป้าหมายเก้ารายการสำหรับผู้ใช้แต่ละราย
คุณสามารถดาวน์โหลดสคริปต์ได้จาก GitHub คุณสามารถแก้ไขโค้ดเพื่อให้เหมาะกับความต้องการของผู้เช่าของคุณได้ ข้อมูลพื้นฐานจะยังคงเหมือนเดิม แต่คุณอาจต้องการเพิ่มนโยบายพิเศษหรือจัดรูปแบบของรายงานให้ละเอียดยิ่งขึ้น
พลังแห่งเชลล์
สคริปต์ใช้เวลาเขียนไม่นาน (ยอมรับว่าฉันมีบิต HTML อยู่ในมือ) นี่เป็นข้อพิสูจน์อีกประการหนึ่งว่า PowerShell มีประโยชน์ต่อผู้ดูแลระบบผู้เช่า Microsoft 365 เพียงใดในแง่ของการเติมเต็มช่องว่างที่ Microsoft ทิ้งไว้ หรือพูดอีกอย่างคือไปที่ที่ Microsoft เลือกที่จะไม่ไป สนุก!
