ค้นหาเว็บไซต์

วิธีรีเซ็ตรหัสผ่านผู้ใช้ 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.

บทความที่เกี่ยวข้อง