วิธีสลับสิทธิ์การใช้งาน Microsoft 365 สำหรับบัญชี Entra ID
สลับสิทธิ์การใช้งาน Microsoft 365 ในขณะที่รักษาชุดแผนบริการไว้
หลังจากอ่านบทความเกี่ยวกับการจัดการสิทธิ์การใช้งานด้วย Microsoft Graph PowerShell SDK แล้ว ผู้อ่านได้ถามถึงวิธีที่ดีที่สุดในการสลับสิทธิ์การใช้งาน Microsoft 365 สำหรับบัญชี Entra ID ในขณะเดียวกันก็รักษาความต่อเนื่องของบริการ (นี่คือคำถามทั้งหมด) ปัญหาคือใบอนุญาตแต่ละบัญชีที่ต้องดำเนินการอาจมีแผนบริการที่ถูกปิดใช้งานที่แตกต่างกัน การเปลี่ยนใบอนุญาตหนึ่งหรือสองใบทำได้ง่ายด้วยตนเอง การเปลี่ยนร้อยอย่างรวดเร็วกลายเป็นแบบฝึกหัดที่น่าเบื่อมาก นั่นคือเมื่อระบบอัตโนมัติผ่าน PowerShell กลายเป็นเครื่องมืออันล้ำค่าสำหรับผู้ดูแลระบบผู้เช่า
แบบฝึกหัดนี้เกี่ยวข้องกับการสลับสิทธิ์การใช้งานผู้ใช้จาก Exchange Online Plan 2 เป็น Microsoft 365 E3 ฉันคาดหวังว่าข้อกำหนดนี้จะเกิดขึ้นสำหรับผู้เช่าที่มีสิทธิ์การใช้งาน Office 365 E3 หรือ Office 365 E5 ที่พบว่าต้องอัปเกรดเป็น Microsoft 365 E3 หรือ Microsoft 365 E5 เพื่อให้มีสิทธิ์ใช้ Microsoft 365 Copilot การอัปเกรดใบอนุญาตจะต้องเกิดขึ้นก่อนที่ผู้เช่าจะสามารถดำเนินการต่อเพื่อซื้อที่นั่ง Copilot ขั้นต่ำ 300 ที่นั่ง และตัดสินใจว่าใครจะได้รับใบอนุญาต Copilot ราคาแพง $30 ต่อเดือน
การออกใบอนุญาตแบบกลุ่มเป็นโซลูชันที่ดีสำหรับการมอบหมายใบอนุญาตแบบอัตโนมัติ ผู้ดูแลระบบสามารถปรับแต่งการกำหนดค่าใบอนุญาตได้โดยการปิดใช้งานคุณสมบัติต่างๆ สิ่งที่เราสำรวจที่นี่คือการเปลี่ยนใบอนุญาตแบบสคริปต์โดยการลบใบอนุญาตเก่าออกและแทนที่ด้วยใบอนุญาตใหม่ ผู้เช่าอาจตัดสินใจใช้แนวทางนี้เพื่อควบคุมโฟลว์การมอบหมายใบอนุญาตทั้งหมด
ทั้งหมดเกี่ยวกับแผนบริการ
โดยปกติจะไม่มีปัญหาในการดูแลรักษาชุดคุณลักษณะที่ผู้ใช้ใช้งานได้เมื่ออัปเกรดใบอนุญาต ใบอนุญาตระดับที่สูงกว่าจะมีฟังก์ชันการทำงานมากกว่าใบอนุญาตระดับที่ต่ำกว่าเสมอ Microsoft ควบคุมความพร้อมใช้งานของคุณสมบัติผ่านแผนบริการ แผนบริการจะกำหนดว่าฟังก์ชันที่แผนควบคุมนั้นเปิดหรือปิดใช้งาน ตัวอย่างเช่น หากผู้เช่าไม่ต้องการใช้ Viva Engage (Yammer) ก็ควรปิดใช้งานแผนบริการ Viva Engage Core ในใบอนุญาตที่มอบหมายให้กับบัญชีผู้ใช้ ผู้เช่ามักจะปิดใช้งานแผนบริการที่ล้าสมัยซึ่ง Microsoft ยังคงรวมกลุ่มไว้ เช่น StaffHub, Sway และ Kaizala รูปที่ 1 แสดงบัญชีที่มีสิทธิ์การใช้งาน Office 365 E3 พร้อมแผนบริการที่ถูกปิดใช้งานสองแผน
งานคือเพื่อให้แน่ใจว่าใบอนุญาตที่อัปเกรดแล้วซึ่งกำหนดให้กับบัญชีผู้ใช้จะยังคงมีฟังก์ชันการทำงานเหมือนเดิม กล่าวอีกนัยหนึ่ง หากแผนบริการถูกปิดใช้งานในใบอนุญาตเก่า ก็ควรจะปิดการใช้งานในใบอนุญาตใหม่
คุณสมบัติ AssignedLicenses เก็บข้อมูลใบอนุญาตสำหรับบัญชีผู้ใช้ ในบรรดาข้อมูลที่เก็บไว้เพื่อขอใบอนุญาตคือชุดแผนบริการที่ปิดใช้งาน ตัวอย่างเช่น ผลลัพธ์นี้แสดงว่ามีแผนบริการที่ถูกปิดใช้งานสี่แผนสำหรับสิทธิ์การใช้งาน Microsoft 365 E5
$User = Get-MgUser -UserId Chris.Bishop@office365itpros.com -Property AssignedLicenses
$User.Assignedlicenses | fl
DisabledPlans : {0d0c0d31-fae7-41f2-b909-eaf4d7f26dba, 0898bdbb-73b0-471a-81e5-20f1fe4dd66e, 8c7d2df8-86f0-4902-b2ed-a0458298f3b3, 7547a3fe-08ee-4ccb-b430-5077c5041653…}
SkuId : 06ebc4ee-1bb5-47dd-8120-11324bc54e06
การจดจำ GUID แผนผลิตภัณฑ์และบริการไม่ใช่เรื่องง่าย คุณสามารถดาวน์โหลดไฟล์ CSV ที่มีข้อมูลเกี่ยวกับ GUID และชื่อที่เกี่ยวข้องสำหรับผลิตภัณฑ์และแผนบริการได้ Microsoft รีเฟรชไฟล์ CSV เป็นระยะ และเป็นไปได้ที่จะอ่านข้อมูลจาก CSV ลงในอาร์เรย์เพื่อให้สามารถเข้าถึงข้อมูลได้ในสคริปต์ PowerShell
คุณสามารถใช้ชุดแผนบริการที่ปิดใช้งานและนำไปใช้เมื่อมอบหมายใบอนุญาตผลิตภัณฑ์ใหม่ วิธีนี้จะได้ผลหากใบอนุญาตใหม่รองรับแผนบริการเดียวกันกับแผนเก่า น่าเสียดายที่นี่ไม่ใช่กรณี ตัวอย่างเช่น มีแผนบริการเวอร์ชันต่างๆ สำหรับแอป เช่น To Do, Form และ Exchange Online ที่มีอยู่ เพื่อให้แน่ใจว่าชุดแผนบริการที่ปิดใช้งานจะนำไปใช้กับใบอนุญาตใหม่ คุณต้องคำนวณค่าที่เทียบเท่าสำหรับแผนบริการที่ปิดใช้งานจากใบอนุญาตเก่า และใช้ค่าเหล่านั้นเมื่อมอบหมายใบอนุญาตใหม่
การสร้างสคริปต์เพื่อสลับสิทธิ์การใช้งาน Microsoft 365
เพื่อหาขั้นตอนที่จำเป็นในการสลับสิทธิ์การใช้งานสำหรับบัญชีผู้ใช้ ฉันตัดสินใจเขียนสคริปต์เพื่ออัปเกรดบัญชีจากสิทธิ์การใช้งาน Office 365 E3 เพื่อให้มีสิทธิ์การใช้งาน Microsoft 365 รหัส:
- ดึงข้อมูลชุดการสมัครสมาชิก (ผลิตภัณฑ์ที่ซื้อ) สำหรับผู้เช่า
- นำเข้าข้อมูลแผนผลิตภัณฑ์และบริการที่เผยแพร่โดย Microsoft
- สร้างตารางแฮชสำหรับผลิตภัณฑ์ที่ใช้ในผู้เช่าและแผนบริการ ตารางแฮชเหล่านี้ใช้สำหรับการค้นหาอย่างรวดเร็วเพื่อแก้ไข GUID เป็นชื่อแผนผลิตภัณฑ์และบริการ
- สร้างอาร์เรย์ของแผนบริการในใบอนุญาตทั้งเก่าและใหม่ และใช้ข้อมูลนี้เพื่อค้นหา GUID ของแผนบริการที่ตรงกัน เพื่อให้แน่ใจว่าคุณสมบัติที่ถูกปิดใช้งานจะดำเนินต่อไป ผลลัพธ์คืออาร์เรย์ที่สคริปต์สามารถตรวจสอบแผนการบริการที่ถูกปิดใช้งานในใบอนุญาตเก่า เพื่อค้นหาค่าที่ถูกต้องเพื่อใช้เมื่อกำหนดใบอนุญาตใหม่ สคริปต์ทำการเปลี่ยนแปลงเพิ่มเติมในอาร์เรย์เพื่อเพิ่มรายการสำหรับ Kaizala เนื่องจากชื่อแผนบริการค่อนข้างแตกต่างกันในใบอนุญาตทั้งสอง (KAIZALA_O365_P3 และ KAIZALA_STANDALONE)
- ค้นหาชุดบัญชีผู้ใช้ที่มีสิทธิ์การใช้งาน Office 365 E3
- สร้างรายการบัญชีและข้อมูลแผนบริการที่ปิดใช้งาน รายการในรายการมีลักษณะดังนี้:
UserId : 96155a51-6885-4c8f-a8b6-e1614af08675
DisplayName : John James
SkuId : 6fd2c87f-b296-42f0-b197-1e91e994b900
DisabledPlans : {aebd3021-9f8f-4bf8-bbe3-0ed2f4f047a1, 7547a3fe-08ee-4ccb-b430-5077c5041653}
- วนซ้ำผ่านรายการ สำหรับแต่ละบัญชี ให้ค้นหาชุดแผนบริการที่ปิดใช้งานสำหรับใบอนุญาตใหม่ จากนั้นเรียกใช้ cmdlet Set-MgUserLicense เพื่อเพิ่มใบอนุญาตใหม่ให้กับบัญชี หากการมอบหมายใบอนุญาตสำเร็จ คำสั่ง Set-MgUserLicense แยกต่างหากจะลบใบอนุญาตเก่าออก แม้ว่าแอปพลิเคชันเช่น Exchange Online จะรองรับ "การซ้อนใบอนุญาต" จะปลอดภัยกว่าในการลบใบอนุญาตเฉพาะเมื่อแน่ใจว่ามีใบอนุญาตทดแทนอยู่แล้ว นี่คือโค้ดสำหรับเพิ่มใบอนุญาตใหม่และลบใบอนุญาตเก่า คุณจะเห็นว่าชุดแผนบริการที่ปิดใช้งานถูกส่งผ่านเป็นอาร์เรย์ในพารามิเตอร์ DisabledPlans:
$Status = Set-MgUserLicense -UserId $User.UserId -AddLicenses @{SkuId = $NewSKU; DisabledPlans = $DisabledServicePlansToUse} `
-RemoveLicenses @() -ErrorAction SilentlyContinue
If (!($Status)) {
Write-Host "Error assigning license - please check availability" -ForegroundColor Red
} Else {
Write-Host ("{0} license assigned to account {1}" -f ($TenantSkuHash[$NewSKU]), $User.DisplayName )
# Now to remove the old license
$Status = Set-MgUserLicense -UserId $User.UserId -AddLicenses @() -RemoveLicenses $OriginalSku -ErrorAction SilentlyContinue
If ($Status) {
Write-Host ("{0} license removed from account {1}" -f ($TenantSkuHash[$OriginalSKU]), $User.DisplayName )
}
}
คุณสามารถดาวน์โหลดสคริปต์ได้จาก GitHub และเช่นเคย มีคำเตือนว่าถึงแม้โค้ดจะใช้งานได้ แต่ก็ไม่พร้อมสำหรับการผลิต การทดสอบเพิ่มเติมบางอย่างและการพัฒนาบางอย่างอาจจำเป็นต่อการกันกระสุนโค้ดและทำให้พร้อมสำหรับการใช้งานในผู้เช่าของคุณ ตัวอย่างเช่น ลองเพิ่มเช็คว่ามีใบอนุญาตก่อนดำเนินการมอบหมายต่อไป แต่โค้ดนั้นเป็น PowerShell ที่ตรงไปตรงมา และควรง่ายต่อการปฏิบัติตาม
หลายเส้นทางสู่โซลูชัน
ข้อดีของการใช้ PowerShell เพื่อทำให้กิจกรรมการดูแลระบบใน Microsoft 365 เป็นอัตโนมัติคือความยืดหยุ่นและระดับการควบคุมที่ได้รับ นั่นไม่ใช่เหตุผลที่จะต้องเลือก PowerShell เสมอเมื่อมีซอฟต์แวร์ที่แกะกล่องให้ใช้งาน การให้สิทธิ์การใช้งานแบบกลุ่มมีแนวโน้มที่จะจัดการกับสถานการณ์การมอบหมายสิทธิ์การใช้งานหลายประการที่คุณจะพบ แต่หากการให้สิทธิ์การใช้งานแบบกลุ่มไม่สามารถจัดการความต้องการของคุณได้ ก็เป็นเรื่องดีที่รู้ว่า PowerShell มีอยู่เสมอ
