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

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

หลังจากเราขึ้นระบบเรียบร้อยแล้ว (บทความขึ้นระบบ)

ตอนนี้ผมเริ่มต้นด้วยการเป็น Admin คนเดียว ไม่มีใครอยู่ด้วย

bit.ly/AdminO365TH หน้ารวมบทความแอดมิน

เดิม วิธีที่ผมแนะนำในบมความเก่า จะมีข้อจำกัดที่ว่า มัน เพิ่มได้ทีละ 300 คนต่อไฟล์ ถ้าหากมีนักเรียน 5000คน ก็ไม่ใช่งานที่สนุกเลย

ผมยังแนะนำให้เริ่มต้นใช้งาน PowerShell เพื่อให้คุ้นชิ้นกับการจัดการแบบนี้ ในอนาคต หากเรามีการอัพเดทกลุ่ม หรือการจัดการอื่นๆ PowerShell จะเป็นเครื่องมือที่เซฟเวลาได้เยอะมาก

สรุป Concept

  • เปิด PowerShell แล้ว login
  • เตรียม excel
  • รันคำสั่ง

ง่ายๆแค่นี้เลย แต่ที่บทความนี้ยาว เพราะจะอธิบายอย่างละเอียดเลยว่า แต่ละอันเอาไว้ทำอะไร

เตรียม PowerShell

เริ่มที่เปิด Windows PowerShell แบบ Run as Administrator [ จะมีหน้าต่าง pop up ขึ้นมาให้กด Yes ]

ต้องเปิดแบบ Run as Administrator ด้วยนะครับสำคัญมาก

หน้าตาหน้ากลัวมาก แต่อย่างเพิ่งตกใจนะครับ เราจะค่อยๆไปด้วยกัน

คำสั่ง บรรทัดแรก — ติดตั้ง Module MSOnline

Install-Module MSOnline

*ถ้าเคย ติดตั้งแล้ว ข้าม ไป connect เลย

Y

Yes ไปเลยฮะ

มันก็จะ Install ตัว MSOnline ให้

ติดตั้งเสร็จแล้วพร้อมใช้งาน

คำสั่งบรรทัดที่สอง — เชื่อมต่อกับ Connect

Connect-MsolService

แล้วมันจะมีหน้า Login ขึ้นมาให้กด

เชื่อมต่อเป็นที่เรียบร้อยแล้ว

คำสั่งบรรทัดที่สาม — เช็คว่าเรามี License อะไรบ้าง

Get-MsolAccountSku

จะขึ้นมาว่า เรามี License อะไรบ้าง

จากรูป เรามี 2 ไลเซน ก๊อบทิ้งไว้ เตรียมเอาไว้ใส่ใน Excel ว่า ใครได้ ไลเซนไหน

opsmoe:STANDARDWOFFPACK_FACULTY

opsmoe:STANDARDWOFFPACK_STUDENT

เลขตัวหน้าคือ ชื่อโรงเรียนเรา : ชื่อไลเซน

เวลาก๊อบไปใส่ Excel ให้ก๊อบ ตาม ที่เขีย 2 บรรทัดบนก่อนหน้าเลย

พักหน้านี้เอาไว้ก่อน เราไปเปิด Excel ดูรายชื่อกันก่อน

เตรียม Excel

ให้ทุกคนไปที่ไฟล์ Excel ที่มีรายชื่อของนักเรียน

แล้วปรับให้มีคอลัมดังนี้ (ชื่อคอลัม ตัวใหญ่ตัวเล็ก มีผลต่อการใส่คำสั่ง)

4 Column นี้ต้องมี

UserPrincipalName — อีเมลนักเรียน ( เดี๋ยวจะมีพูดถึง เทคนิคการตั้งชื่ออีเมล)

DisplayName — ชื่อที่แสดงเวลาใช้งาน

AccountSkuId — License ของแต่ละคน

UsageLocation — ที่อยู่ ใส่ TH ไปก็ได้

อันนี้ Version มินิ แบบ ใส่ข้อมูลน้อยๆ แค่เท่าที่จำเป็น

Column เหล่านี้ คือ ใส่หรือไม่ใส่ก็ได้

FirstName — ชื่อนักเรียน

LastName — นามสกุล

Password — รหัส ต้องมี ตัวเล็กตัวใหญ่ตัวเลข ตัวอักษรพิเศษ เช่น Temp@123

Title — เช่น Teacher, Student

Department — แผนกต่างๆ

Room — ห้องเรียนของนักเรียน ( ทำไว้ก่อน ยังไม่ได้ใช้นะครับ ใช้ใน บทความถัดไป ใส่ปี ด้วยก็ดี แบบ 2021 M 1 Room 1)

Reference อื่นๆ อีกมายตาม Document

ชื่อภาษาไทยก็รองรับนะครับ ดูจากตัวอย่าง

แบบ ให้ระบบสร้างรหัสผ่านให้

แบบเรากำหนดรหัสผ่านเอง

แบบ มีรหัสผ่าน

ประเด็นเรื่องอีเมล ถ้าชื่อเป็นภาษาไทย สร้างยังไงดี ?

ผมแนะนำเป็นใช้รหัสนักเรียน @โรงเรียน.ac.th

เช่น 21345@pws.ac.th หรือ บางคนทำ Sub domain เอาไว้เป็น 21345@student.pws.ac.th ก็ได้ครับ

วิธีการ ตั้งชื่อเป็น รหัสนักเรียนตามด้วย@โรงเรียน?

ให้เราเพิ่ม Column รหัสนักเรียนขึ้นมาอันนึง แล้วใช้สูตร ช่องรหัส&“@เมลโรงเรียน”

column Room, StudentID ยังไม่ได้ใช้ ใส่มาเดี๋ยวลบทิ้ง

เสร็จแล้วก็กดลากได้เลยครับ ส่วน Column StudentID จะปล่อยทิ้งไว้ก็ได้ครับ ไม่มีผลอะไร

AccountSkuId ไปเอามาจากไหน ?

จากคำสั่ง Get-MsolAccountSku ด้านบน

จากนั้นกด Save As บันทึกเป็น CSV UTF-8

ห้ามลืมถ้าลืม ชื่อภาษาไทยจะกลายเป็นภาษาต่างดาว

เมื่อไฟล์พร้อมแล้ว กลับมาที่ PowerShell ของเรากับครับ

รันคำสั่ง

คำสั่งบรรทัดที่สี่ : ไปเอารายชื่อจาก CSV มาใส่ในระบบ

Import-Csv -Path “File import location” | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -LicenseAssignment $_.AccountSkuId -UsageLocation $_.UsageLocation} | Export-Csv -Path “File Export location”

ยาวมาก !!! อย่าเพิ่งตกใจ

มาค่อยๆดูกันทีละชิ้น — อันนี้เป็นตัวอย่าง ผมจะสอนวิธีเปลี่ยนด้วย

โครงสร้างคำสั่งจะมี 4ส่วน

  1. ไฟล์อยู่ไหน
  2. จะใช้คำสั่งอะไร
  3. คอลัมอะไรบ้าง ( เพิ่มลดได้ ตามต้องการ)
  4. เก็บไฟล์ที่เสร็จแล้วที่ไหน

1. Import-Csv -Path “File import location” | foreach

2. {New-MsolUser

3. -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -LicenseAssignment $_.AccountSkuId -UsageLocation $_.UsageLocation

4. } | Export-Csv -Path “File Export location”

อันนี้คือที่ ที่บอกว่าไฟล์เราเก็บเอาไว้ไหน

Import-Csv -Path “File import location”| foreach

เราดูได้จากการกด คลิกขวาที่ไฟล์แล้วเลือก Properties หรือกด Shift ค้างไว้ แล้วกด Copy as path ได้เลย

ตามรูป ถ้าเปลี่ยนให้เข้ากับของผมแล้วจะได้ตามนี้ครับ

Import-Csv -Path “C:\Users\v-noratt\Downloads\newAcc.csv”

จากนั้น อันนี้คือ จะเอา Column ไหนเข้าไปบ้าง ? แนะนำว่าอย่าไปแก้ไขอะไรมัน ตั้งหัว Column ให้ตรงกับที่ผมแนะนำทั้งตัวใหญ่ตัวเล็กถือว่าโอเคแล้วครับ

อันนี้คือ คำสั่งให้สร้าง User

{New-MsolUser

อันนี้คือ การบอกว่า ตัวแปรไหน คือ คอลัมไหน

-DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -LicenseAssignment $_.AccountSkuId -UsageLocation $_.UsageLocation} |

เราจะบอกว่า -DisplayName คือ ชื่อที่ระบบถาม

ส่วน $_. คือชื่อตัวแปร ซึ่งตรงกับชื่อคอลัม

คำสั่งส่วนสุดท้ายคือ สร้างเสร็จแล้วจะเอา Email Password ไปเก็บไว้ที่ไหน?

Export-Csv -Path “File Export location

ก็ ล้อตอน Import เข้ามาได้เลยครับ แล้วตั้งชื่อไฟล์ใหม่ ผมตั้งเป็น NewAccountResults.csv ระบบจะไปสร้างไฟล์ชื่อนี้ให้ ( ไม้ต้องสร้างเอง ระบบสร้างให้ )

Export-Csv -Path “C:\Users\v-noratt\Downloads\NewAccountResults.csv”

สรุปสุดท้าย คำสั่งจะออกมาเป็น

  1. Version ให้ระบบตั้ง password ให้

Import-Csv -Path “C:\Users\v-noratt\Downloads\newAcc.csv” | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -LicenseAssignment $_.AccountSkuId -UsageLocation $_.UsageLocation} | Export-Csv -Path “C:\Users\v-noratt\Downloads\NewAccountResults.csv”

2. ถ้าใครมี บังคับตั้ง Password ให้ด้วย ( เปลี่ยนทีหลังอยู่ดี แค่สะดวกในการแจ้ง)

Import-Csv -Path “C:\Users\v-noratt\Downloads\newAcc.csv” | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -LicenseAssignment $_.AccountSkuId -UsageLocation $_.UsageLocation -Password $_.Password} | Export-Csv -Path “C:\Users\v-noratt\Downloads\NewAccountResults.csv”

แค่เพิ่ม -Password $_.Password มาต่อท้าย location

3. Version ตั้งพาสเวิร์ดให้ และ ไม่ให้เปลี่ยนด้วย

Import-Csv -Path “C:\Users\v-noratt\Downloads\newAcc.csv” | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -LicenseAssignment $_.AccountSkuId -UsageLocation $_.UsageLocation -Password $_.Password -ForceChangePassword $false} | Export-Csv -Path “C:\Users\v-noratt\Downloads\NewAccountResults.csv”

เติม -ForceChangePassword $false เพิ่มขึ้นมา ใน {}

ใครไม่ใส่คอลัมไหน ก็ลบออกนะครับ

กดเคาะ Enter ก็จะขึ้น Active User ดังรูปครับ ( ไปเช็คได้ที่หน้า Admin → Users → Active users)

แล้วก็จะได้ไฟล์ ชื่อ NewAccountResults ที่เราตั้งชื่อเอาไว้ด้วย

สรุป คำสั่งทั้งหมดสำหรับ Create User

  1. Install-Module MSOnline
  2. Connect-MsolService
  3. Get-MsolAccountSku
  4. Import-Csv -Path “C:\Users\v-noratt\Downloads\newAcc.csv” | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -LicenseAssignment $_.AccountSkuId -UsageLocation $_.UsageLocation} | Export-Csv -Path “C:\Users\v-noratt\Downloads\NewAccountResults.csv”

ต่อ Part 2 การสร้างกลุ่มให้แต่ละ User

การตั้งค่าให้นักเรียน Reset Password เองได้

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

--

--

Mos Noppadol Rattanawisadrat
MSEDUTH

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