การเปลี่ยน Password ของ User จำนวนมาก ด้วย PowerShell

Mos Noppadol Rattanawisadrat
MSEDUTH
Published in
3 min readJun 12, 2021

บทความนี้เราจะพูดถึงการตั้ง Password ใหม่ให้ User กันครับ

มักจะใช้ในกรณี

  • ต้องการกำหนด Password เอง ( แต่ตอนสร้าง ครั้งแรก ไม่ได้ใช้วิธี PowerShell แต่ไปใช้วิธี Upload Csv เลยได้ พาสเวิร์ด random มา )
  • ตอนสร้าง ลืม Download result ซึ่งเป็นบ่อยมาก

วิธีการ Reset password แบบเก่า มีข้อจำกัดอยู่ 2 อย่าง

  • ทำได้ทีละแค่ 40 คน
  • ต้องมานั่งติ๊กเลือกคนเอง
  • กำหนด Password ได้ แต่ต้องพิมพ์เอง ทีละคน

วิธีแบบใหม่ เราจะ สร้าง Excel แล้วใส่ Password ใหม่เข้าไป

สรุป Concept

  • เข้า PowerShell แล้ว login ด้วยเมล Admin office 365
  • ใส่รายชื่อ Email ของคนที่จะเปลี่ยน พร้อมชื่อใหม่ ลง Csv
  • พิมพ์คำสั่งอัพเดท

Reference

เข้า 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 ขึ้นมาให้กด

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

เตรียม excel ( CSV )

ผมใช้แค่ 2 Column ชื่ออีเมล กับ รหัสผ่านอันใหม่

Password ต้องไม่ง่ายเกินไปด้วยนะ ไม่งั้นระบบไม่ให้ผ่าน

เกณฑ์รหัส

  • ยาว 8–16 ตัวอักษร
  • มีตัวอักษร เล็ก และ ใหญ่
  • ต้องตัวเลข หรือ สัญลักษณ์ เช่น @
  • รหัสไม่ตรงกับชื่ออีเมลตัวเอง เดี๋ยวจะเดาง่ายไป
  • รหัสต้องไม่มี ช่องว่างด้วย อันนี้คนผิดกันเยอะ

ตั้งใหม่ออกมาหน้าตาเป็นแบบนี้

จะเห็นว่า มันฟ้อง รหัส 12345 เหมือนชื่อเมล 12345

สุดท้ายมาจบแบบนี้

ถ้าอยากได้ ข้อมูลเก่า User เอาเป็นไฟล์ตั้งหลัก ให้ไป Export ออกมา

ตอนเซฟก็อย่าลืม เซฟเป็น CSV ส่วนชื่อจะตั้งเป็นอะไรก็ได้

จากนั้นก็ไป Copy file location มาเก็บไว้ก่อน

กด Shift ค้างไว้ที่ไฟล์ แล้วกด Copy as path ได้เลย

เตรียมคำสั่ง

โดยคำสั่งที่ผมใช้คือ

Import-Csv -Path “C:\Users\Microsoft\Downloads\users.csv” | foreach {Set-MsolUserPassword -UserPrincipalName $_.UserPrincipalName -NewPassword $_.NewPassword }

ระบบจะแสดง รหัสที่ถูกเปลี่ยน

ซึ่งรหัสที่ได้มานี้ เป็นรหัสชั่วคราว หลังจาก User ได้เข้าใช้งานครั้งแรก ระบบจะบังคับเปลี่ยน Password เป็นของที่ตั้งเอง

ถ้าไม่อยากให้บังคับเปลี่ยน Password

ให้เติม -ForceChangePassword $false

Import-Csv -Path “C:\Users\Microsoft\Downloads\users.csv” | foreach {Set-MsolUserPassword -UserPrincipalName $_.UserPrincipalName -NewPassword $_.NewPassword -ForceChangePassword $false }

ใช้ไฟล์เดิม แค่เติมคำสั่ง

อธิบายคำสั่ง

Import-Csv -Path “C:\Users\Microsoft\Downloads\todelete.csv”

คือ เอาไฟล์จากไหน

| foreach {}

เปิดลูป ให้ทำคำสั่งทั้งหมดใน {}

Set-MsolUserPassword

คำสั่งเปลี่ยน Password

-UserPrincipalName $_.UserPrincipalName

ดูจากอีเมลนี้

-NewPassword $_.NewPassword

ให้ใช้รหัสผ่าน อันนี้

--

--

Mos Noppadol Rattanawisadrat
MSEDUTH

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