การสร้าง Group User จำนวนมาก ด้วย Power Shell [ Office 365 Admin ]

Mos Noppadol Rattanawisadrat
MSEDUTH
Published in
5 min readMay 15, 2020

ตอนนี้เรามี 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 เองได้

อ่านบทความอื่นๆ

--

--

Mos Noppadol Rattanawisadrat
MSEDUTH

A guy who passionate on Technology, Psychology, Science and business thing