การสร้าง User จำนวนมาก ด้วย Power Shell [ Office 365 Admin ]
หลังจากเราขึ้นระบบเรียบร้อยแล้ว (บทความขึ้นระบบ)
ตอนนี้ผมเริ่มต้นด้วยการเป็น 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)
ชื่อภาษาไทยก็รองรับนะครับ ดูจากตัวอย่าง
แบบ ให้ระบบสร้างรหัสผ่านให้
แบบเรากำหนดรหัสผ่านเอง
ประเด็นเรื่องอีเมล ถ้าชื่อเป็นภาษาไทย สร้างยังไงดี ?
ผมแนะนำเป็นใช้รหัสนักเรียน @โรงเรียน.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. 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”
สรุปสุดท้าย คำสั่งจะออกมาเป็น
- 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
- Install-Module MSOnline
- Connect-MsolService
- Get-MsolAccountSku
- 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”