การสร้าง Group User จำนวนมาก ด้วย Power Shell [ Office 365 Admin ]
ตอนนี้เรามี User เรียบร้อยแล้ว แต่ยังไม่ได้บอกว่าใครเรียนอยู่ ระดับชั้นไหน ห้องไหน
เป้าหมายของเราคือ สร้างห้องเรียน แล้ว พิมพ์ชื่อกลุ่ม แล้วเชิญนักเรียนทีเดียวทั้งห้องได้เลย
bit.ly/AdminO365TH หน้ารวมบทความแอดมิน
วิธีแบบ upload file ทีละห้อง
ไปที่หน้า Azure Active directory
จากนั้นสร้าง group แบบ Microsoft 365 ขึ้นมาก่อน
ไปที่ group นั้นๆ เพื่อ Upload excel ( มีตัวอย่างไฟล์ให้ )
ใส่ list email แล้วก็ Upload ได้เลย ( ตัวอย่างจะมี example มาให้ ก็ลบทิ้งได้เลยบรรทัด 3 )
ก็จะเป็นอันเสร็จเรียบร้อย แต่ถ้ามีห้องจำนวนเยอะๆ ก็จะเหนื่อย แนะนำวิธีที่ 2 ดีกว่า
วิธีทำทีเดียวทั้งโรงเรียน
สิ่งที่ต้องมี CSV 2 ไฟล์ 1. ไฟล์ สำหรับสร้างกลุ่ม 2. ไฟล์ที่บอกว่า เมลไหนอยู่กลุ่มไหน
จากประสบการณ์ แนะนำให้ตั้งชื่อห้อง มีปี ด้วย เช่น 2564 M 1 Room 1 เพื่อที่จะได้ง่ายต่อการจัดการ ปีหน้า ก็สร้างใหม่อีกชุด แก้แค่ใน Excel
ต่อจาก บทความสร้าง User — แต่ว่าคำสั่งไม่เกี่ยวข้องกัน ใครสร้าง User มาจาก วิธีอื่นก็ได้ครับ
จริงๆมีแค่ column UserPrincipalName กับ Room ก็พอแล้ว
ข้อควรพิจารณา การสร้างกลุ่มแบบนี้ อาจจะต้องมีการลบสร้างใหม่ทุกปี หรือไม่งั้นต้องตั้งชื่อกลุ่มเป็นชื่อรุ่นแทน แล้วถ้ามี ม.4 เพิ่มเข้ามาครึ่งห้อง ออกครึ่งห้อง อาจจต้องใช้คำสั่ง Add / Delete แทนการสร้างกลุ่มใหม่
เริ่มที่เปิด Windows PowerShell แบบ Run as Adminstrator [ จะมีหน้าต่าง pop up ขึ้นมาให้กด Yes ]
คำสั่งแรก ติดตั้ง Module บนระบบเมล เพื่อจัดกลุ่ม
Install-Module -Name ExchangeOnlineManagement
Y
คำสั่งที่สอง — Login เข้าไปก่อนฮะ
$UserCredential = Get-Credential
ใส่เมล Admin เราเข้าไป
คำสั่งที่สาม
Set-ExecutionPolicy RemoteSigned
Y
คำสั่งที่สี่ — เชื่อมต่อ โลดดด
Connect-ExchangeOnline -Credential $UserCredential -ShowProgress $true
ก็จะเชื่อมต่อเรียบร้อย
ไปสร้าง List ของ กลุ่มเอาไว้ก่อนใน CSV File
เปิด Excel มา ผมตั้งเอาไว้แค่ 4 ห้อง
หัวคอลัมต้องชื่อ Room นะครับ
ถ้าจะเปลี่ยนตรงนี้ ต้องเปลี่ยนโค้ดด้วยอีกที
แนะนำให้ชื่อกลุ่มเป็นภาษาอังกฤษ ยาวเกิน 6 ตัวอักษร
จากนั้นอย่าลืมเซฟเป็น CSV UTF-8
คำสั่งที่ห้า สร้างกลุ่มก่อน เดี๋ยวค่อยเอาคนเข้า
Import-Csv “File location” | foreach{New-DistributionGroup -Name $_.Room}
กด Shift + คลิกขวา จะเจอ Copy as path
แล้วเราก็เอาไปวางทับ ตั้งแต่ “ จนถึง ”
ของผมออกมาหน้าตาแบบนี้
Import-Csv “C:\Users\v-noratt\Downloads\Room.csv” | foreach{New-DistributionGroup -Name $_.Room}
ถ้าชื่อซ้ำ มันจะขึ้นแดงๆ ไม่สร้างให้ แต่อันที่ไม่ซ้ำ จะสร้างให้ปกติ
ขั้นตอนนี้ใช้เวลาพอสมควรเลย ยิ่งสร้างห้องเยอะมากๆ อาจจะใช้เวลา หลักชั่วโมง ยังไง ลองกด refresh เพื่อเช็คดู หรือใส่คำสั่งเพื่อเช็คก็ได้ครับ
Get-DistributionGroup
เตรียม CSV file สำหรับบอกว่า ใครอยู่ห้องไหนกันเถอะ !!
Cloumn ที่จำเป็นคือ ( ใช้ชื่อนี้เลย ตามคำสั่งใน PowerShell ตัวเล็กตัวใหญ่มีผลด้วย)
UserPrincipalName — ใส่อีเมล
Room — ห้องที่นักเรียนอยู่
จากนั้นกดเซฟแบบ CSV UTF-8
คำสั่งสุดท้าย — ถึงเวลานำชื่อนักเรียนและครู เข้าห้อง
Import-Csv “File Location” | foreach{Add-DistributionGroupMember -Identity $_.Room -Member $_.UserPrincipalName}
ตอนนี้ห้องผมยังว่างเปล่านะครับ แล้วก็ Copy path มาใส่แทน File location ได้เลย
Import-Csv “C:\Users\v-noratt\Downloads\newAcc.csv” | foreach{Add-DistributionGroupMember -Identity $_.Room -Member $_.UserPrincipalName}
ของผมได้เป็นดังนี้
ถ้าใคร add แล้วขึ้นแดงๆ เพราะสร้าง CSV นานไป ให้ลอง Connect-ExcahgeOnline ใหม่อีกรอบ ก็จะเรียบร้อย ( อันนี้คือ ตอนคำสั่งที่ 4 เราทิ้งเวลานานไป จนต้องConnect ใหม่)
ขั้นตอนนี้จะใช้เวลาพอสมควรเลย สำหรับ User จำนวนมาก แต่เราไม่ต้องนั่งทำเอง ปล่อยให้มัน run หลังบ้านไปได้เลยครับ
ตอนนี้เราก็ใส่ User เข้าห้องเรียนเรียบร้อยแล้ว ตาม Excel ที่เราตั้งเอาไว้เลย
ในห้องของเรามีอีเมลประจำห้องด้วยนะครับ
แล้วเวลาใช้งาน ทำยังไง ?
หลังจากสร้างห้องเรียนแล้ว ตอนเรา Add member เราสามารถเพิ่มที ทั้งห้องได้เลย ไม่ต้องกดชื่อคนละคน หรือว่า ส่งโค้ด ส่ง link อีกต่อไป ทำให้เราสามารถ สร้างห้องก่อนที่นักเรียนจะเปิดเทอมได้
หรือจะแอดจากทีมเก่า โต้งๆ แบบนี้เลยก็ได้ครับ ถ้าชื่อซ้ำก็จะไม่แอดคนซ้ำให้
วิธีการตั้งค่าให้นักเรียน Reset Password เองได้