วิธีรีเซ็ตรหัสผ่านผู้ใช้ Active Directory ด้วย PowerShell และ ADUC
ในบทความนี้ เราจะดูวิธีการเปลี่ยน (รีเซ็ต) รหัสผ่านของผู้ใช้ Active Directory หนึ่งรายหรือหลายคนโดยใช้ Active Directory Users และ Computers แบบกราฟิกสแน็ปอิน (ADUC) จากบรรทัดคำสั่ง หรือใช้ตั้งค่า -ADAccountPassword PowerShell cmdlet
รีเซ็ตรหัสผ่านผู้ใช้ด้วย Active Directory Console (Dsa.msc)
คุณสามารถใช้
dsa.msc(ผู้ใช้ Active Directory & คอมพิวเตอร์ - ADUC) สแน็ปอินแบบกราฟิกเพื่อรีเซ็ตรหัสผ่านของผู้ใช้ Active Directory เปิดคอนโซล ADUC และค้นหาบัญชีผู้ใช้ที่คุณต้องการเปลี่ยนรหัสผ่าน คลิกขวาที่มันแล้วเลือก รีเซ็ตรหัสผ่าน
ป้อนรหัสผ่านใหม่ (สองครั้ง) คุณสามารถเปิดใช้งานสองตัวเลือกได้ที่นี่:
-
ผู้ใช้ต้องเปลี่ยนรหัสผ่านเมื่อเข้าสู่ระบบครั้งถัดไป - หากคุณต้องการให้ผู้ใช้ตั้งรหัสผ่านใหม่ในครั้งต่อไปที่เข้าสู่ระบบ
ปลดล็อกบัญชีผู้ใช้ - เปิดใช้งานตัวเลือกนี้หากคุณต้องการปลดล็อกผู้ใช้ (หากบัญชีถูกล็อกโดยนโยบายความปลอดภัยของ AD เนื่องจากมีการพยายามเข้าสู่ระบบหลายครั้งด้วยรหัสผ่านที่ไม่ถูกต้อง)
นี่เป็นวิธีที่ง่ายที่สุดและเป็นธรรมชาติที่สุดในการรีเซ็ตรหัสผ่านของผู้ใช้โดเมน
นอกจากนี้ ในคุณสมบัติผู้ใช้บนแท็บตัวแก้ไขแอตทริบิวต์ AD คุณสามารถค้นหาข้อมูลเกี่ยวกับวันที่เปลี่ยนรหัสผ่านครั้งล่าสุดได้ ค่านี้ถูกเก็บไว้ในแอตทริบิวต์ผู้ใช้ pwdLastSet
ในการรีเซ็ตรหัสผ่านผู้ใช้ บัญชีของคุณต้องมีสิทธิ์ที่เหมาะสมในโดเมน AD ตามค่าเริ่มต้น ผู้ใช้ AD ที่ไม่ใช่ผู้ดูแลระบบจะไม่สามารถรีเซ็ตรหัสผ่านของบัญชีอื่นได้ และเฉพาะสมาชิกของกลุ่ม ผู้ดูแลระบบโดเมน และ ผู้ดำเนินการบัญชี ในตัวเท่านั้นที่มีสิทธิ์เหล่านี้
คุณสามารถให้สิทธิ์แก่กลุ่มผู้ใช้อื่นในการรีเซ็ตรหัสผ่านของผู้ใช้ใน OU ที่ระบุได้โดยใช้การมอบสิทธิ์ Active Directory ลิงก์แสดงตัวอย่างการมอบหมายสิทธิ์ในการรีเซ็ตรหัสผ่านและปลดล็อกผู้ใช้ไปยังกลุ่ม HelpDesk
ในการตรวจสอบว่าบัญชีของคุณมีสิทธิ์ในการรีเซ็ตรหัสผ่านของผู้ใช้ AD ที่ระบุ ให้เปิดคุณสมบัติ ไปที่แท็บความปลอดภัย -> ขั้นสูง -> การเข้าถึงที่มีประสิทธิภาพ -> ระบุชื่อบัญชีของคุณ -> ตรวจสอบให้แน่ใจว่าคุณมี < สิทธิ์>รีเซ็ตรหัสผ่าน
จะรีเซ็ตรหัสผ่านของผู้ใช้ใน Active Directory ด้วย PowerShell ได้อย่างไร
คุณสามารถใช้ cmdlets Set-ADAccountPassword เพื่อรีเซ็ตรหัสผ่านของผู้ใช้ Active Directory โดยใช้ PowerShell cmdlet นี้เป็นส่วนหนึ่งของโมดูล Active Directory สำหรับ Windows PowerShell (ในรุ่นเดสก์ท็อป Windows เป็นส่วนหนึ่งของ RSAT) นำเข้าโมดูลนี้เข้าสู่เซสชัน PowerShell ของคุณ:
Import-module ActiveDirectoryหากต้องการรีเซ็ตรหัสผ่านสำหรับผู้ใช้ jliebert และตั้งรหัสผ่านใหม่ myP@ssw0rd112 ให้รันคำสั่งนี้:
Set-ADAccountPassword jliebert -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “myP@ssw0rd112” -Force -Verbose) -PassThruหากต้องการสร้างรหัสผ่านที่ซับซ้อนสำหรับผู้ใช้โดยอัตโนมัติ คุณสามารถใช้เมธอด GeneratePassword ที่อธิบายไว้ในบทความ การสร้างรหัสผ่านแบบสุ่มที่รัดกุมด้วย PowerShell
ตามค่าเริ่มต้น cmdlet จะส่งคืนวัตถุและไม่แสดงอะไรเลยในคอนโซล หากต้องการแสดงข้อมูลเกี่ยวกับวัตถุผู้ใช้ใน AD คุณสามารถใช้พารามิเตอร์ -PassThru
คุณสามารถระบุ sAMAccountName (ในกรณีของเรา), objectGUID, SID ของผู้ใช้ หรือ DN (ชื่อเฉพาะ เช่น CN=jliebert,OU=Users,DC=a-d,DC=com) เป็นชื่อผู้ใช้
หากคุณไม่ระบุพารามิเตอร์ -รีเซ็ต เมื่อเปลี่ยนรหัสผ่านผู้ใช้ คุณต้องป้อนรหัสผ่านบัญชีเก่าและใหม่ด้วยตนเอง
หมายเหตุ หากข้อผิดพลาดเกิดขึ้นเมื่อรีเซ็ตรหัสผ่านผู้ใช้โดยใช้ Set-ADAccountPassword cmdlet:
Set-ADAccountPassword: The password does not meet the length, complexity, or history requirement of the domain.ซึ่งหมายความว่ารหัสผ่านใหม่ของผู้ใช้มีความซับซ้อน ความยาว ฯลฯ ข้อกำหนดที่กำหนดไว้ในนโยบายรหัสผ่านของโดเมนหรือนโยบายรหัสผ่านแบบละเอียดที่บัญชีต้องปฏิบัติตาม
คุณสามารถรับการตั้งค่านโยบายรหัสผ่านที่เป็นผลลัพธ์สำหรับผู้ใช้โดเมนได้ดังนี้:
Get-ADUserResultantPasswordPolicy -Identity jliebertหากคุณเปิดใช้งานประวัติคำสั่ง PowerShell และคุณไม่ต้องการให้รหัสผ่านแสดงในคอนโซล PoSh เป็นข้อความล้วน คุณต้องแปลงรหัสผ่านเป็นสตริงที่ปลอดภัยด้วยวิธีเดียวกับเมื่อสร้างบัญชีผู้ใช้ใหม่ (คุณสามารถอ่าน เพิ่มเติมเกี่ยวกับการป้องกันด้วยรหัสผ่านในสคริปต์ PowerShell ที่นี่):
$NewPasswd=Read-Host "Enter a new user password" -AsSecureStringตอนนี้คุณสามารถตั้งรหัสผ่านใหม่สำหรับผู้ใช้:
Set-ADAccountPassword jliebert -Reset -NewPassword $NewPasswd -PassThruเมื่อรีเซ็ตรหัสผ่านผู้ใช้ คุณสามารถบังคับให้บัญชีปลดล็อกได้ หากบัญชีถูกล็อกก่อนหน้านี้ (หากต้องการทราบว่าบัญชีถูกล็อกจากคอมพิวเตอร์เครื่องใด โปรดอ่านบทความ วิธีค้นหาแหล่งที่มาของการล็อกบัญชีใน Active Directory):
Unlock-ADAccount -Identity jliebertหากต้องการบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านในครั้งต่อไปที่เข้าสู่ระบบโดเมน ให้รันคำสั่งต่อไปนี้:
Set-ADUser -Identity jliebert -ChangePasswordAtLogon $trueคุณสามารถรวมคำสั่งเปลี่ยนรหัสผ่านและข้อกำหนดในการเปลี่ยนรหัสผ่าน (นี่คือแอตทริบิวต์วัตถุ userAccountControl) กับ PowerShell one-liner:
Set-ADAccountPassword jliebert -NewPassword $NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $Trueเมื่อใช้ Get-ADUser cmdlet คุณสามารถตรวจสอบให้แน่ใจว่ารหัสผ่านได้รับการรีเซ็ตเรียบร้อยแล้ว และแสดงวันที่ล่าสุดของการเปลี่ยนรหัสผ่านของบัญชี:
Get-ADUser jliebert -Properties * | select name, pass*เมื่อรีเซ็ตรหัสผ่าน EventID 4724 จะถูกลงทะเบียนในบันทึกการรักษาความปลอดภัยของตัวควบคุมโดเมน (DC) เหตุการณ์นี้สามารถช่วยคุณระบุบัญชีที่รีเซ็ตรหัสผ่านของผู้ใช้
คุณสามารถค้นหาเมื่อรหัสผ่านของผู้ใช้หมดอายุตามการตั้งค่านโยบายรหัสผ่านที่มีผลบังคับใช้โดยใช้คำสั่ง PowerShell:
Get-ADUser -Identity simonecole -Properties msDS-UserPasswordExpiryTimeComputed | select-object @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }}จะเปลี่ยนรหัสผ่านสำหรับผู้ใช้ AD หลายคนด้วย PowerShell ได้อย่างไร
ด้านบน เราได้แสดงวิธีรีเซ็ตรหัสผ่านของผู้ใช้ AD รายเดียวโดยใช้ PowerShell ตอนนี้ มาดูสถานการณ์อื่นที่คุณต้องเปลี่ยนรหัสผ่านของผู้ใช้หลายคนพร้อมกัน
ตัวอย่างเช่น คุณต้องการรีเซ็ตรหัสผ่านของพนักงานทุกคนในแผนกขายเป็นรหัสผ่านเดียวกัน และบังคับให้เปลี่ยนรหัสผ่านในครั้งต่อไปที่เข้าสู่ระบบ คุณสามารถใช้คำสั่ง รับ ADUser - ตัวกรอง เพื่อเลือกผู้ใช้ที่มีค่าเฉพาะในแอตทริบิวต์อย่างใดอย่างหนึ่ง:
get-aduser -filter "department -eq 'Sales Dept' -AND enabled -eq 'True'" | Set-ADAccountPassword -NewPassword $NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $Trueลองดูตัวอย่างอื่น สมมติว่าคุณมีไฟล์ CSV/Excel ที่มีรายชื่อผู้ใช้ที่ต้องรีเซ็ตรหัสผ่านและรหัสผ่านที่ไม่ซ้ำกันสำหรับผู้ใช้แต่ละคน นี่คือรูปแบบของไฟล์ users.csv:
sAMAccountName;NewPassword
acidicjustine;Pa$$w0r1
josephomoore;N$isory01
simonecole;k@32d3!2คุณสามารถรีเซ็ตรหัสผ่านสำหรับแต่ละบัญชีผู้ใช้ในไฟล์ CSV ที่ระบุด้วยสคริปต์ PowerShell ต่อไปนี้:
Import-Csv users.csv -Delimiter ";" | Foreach {
$NewPass = ConvertTo-SecureString -AsPlainText $_.NewPassword -Force
Set-ADAccountPassword -Identity $_.sAMAccountName -NewPassword $NewPass -Reset -PassThru | Set-ADUser -ChangePasswordAtLogon $false
}หลังจากรหัสนี้ถูกดำเนินการ รหัสผ่านเฉพาะใหม่จะถูกตั้งค่าสำหรับผู้ใช้ AD ทั้งหมดในไฟล์
การเปลี่ยนรหัสผ่านผู้ใช้โดเมนจากบรรทัดคำสั่ง
หากคุณไม่ได้ติดตั้งคอนโซล ADUC หรือโมดูล RSAT-AD-PowerShell บนคอมพิวเตอร์ของคุณ คุณสามารถรีเซ็ตรหัสผ่านผู้ใช้โดเมนด้วยคำสั่งคอนโซล การใช้เน็ต หากต้องการรับข้อมูลเกี่ยวกับผู้ใช้โดเมน ให้รันคำสั่ง:
net user jliebert /domainบรรทัดคำสั่งแสดงข้อมูลพื้นฐานเกี่ยวกับคุณสมบัติรหัสผ่านของผู้ใช้ในโดเมน:
Password last set 4/22/2022 2:15:15 AM
Password expires Never
Password changeable 4/23/2022 2:15:15 AM
Password required Yes
User may change password Yes
Last logon 4/22/2022 2:48:12 AM
Logon hours allowed Allค่า Last Logon จะแสดงเวลาที่ผู้ใช้เข้าสู่ระบบโดเมนครั้งล่าสุด คุณสามารถรับข้อมูลเพิ่มเติมเกี่ยวกับประวัติการเข้าสู่ระบบของผู้ใช้ได้ใน Active Directory
หากต้องการรีเซ็ตรหัสผ่านของผู้ใช้รายนี้ ให้รันคำสั่ง:
net user jliebert /domain *ป้อนรหัสผ่านใหม่และยืนยัน:
Type a password for the user: xxxx
Retype the password to confirm: xxxx
The command completed successfully.







