当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

作者:精品下载站 日期:2024-12-14 23:23:45 浏览:12 分类:玩电脑

如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码


在本文中,我们将了解如何使用 Active Directory 用户和计算机图形管理单元 (ADUC)、从命令行或使用 Set-ADAccountPassword PowerShell cmdlet 更改(重置)一个或多个 Active Directory 用户的密码。

使用 Active Directory 控制台 (Dsa.msc) 重置用户密码

您可以使用

dsa.msc

(Active Directory 用户和计算机 - ADUC)用于重置 Active Directory 用户密码的图形管理单元。打开 ADUC 控制台并搜索要更改密码的用户帐户。右键单击它并选择重置密码

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

输入新密码(两次)。您可以在此处启用两个选项:

  • 用户下次登录时必须更改密码 - 如果您希望用户下次登录时为自己设置一个新密码;

  • 解锁用户的帐户 - 如果您想解锁用户(如果帐户由于多次使用错误密码尝试登录而被 AD 安全策略锁定),请启用此选项。

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

这是重置域用户密码的最简单、最直观的方法。

此外,在 AD 属性编辑器选项卡上的用户属性中,您可以找到有关上次密码更改日期的信息。该值存储在pwdLastSet用户属性中。

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

要重置用户密码,您的帐户必须在 AD 域中具有适当的权限。默认情况下,非管理员 AD 用户无法重置其他帐户的密码,并且只有内置的域管理员帐户操作员组的成员才拥有这些权限。

您可以使用 Active Directory 委派授予其他用户组重置特定 OU 中的用户密码的权限。该链接提供了将重置密码和解锁用户的权限委派给 HelpDesk 组的示例。

要检查您的帐户是否有权重置特定 AD 用户的密码,请打开其属性,转到安全选项卡 -> 高级 -> 有效访问 -> 指定您的帐户名称 -> 确保您拥有重置密码权限。

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

如何使用 PowerShell 在 Active Directory 中重置用户密码?

您可以使用 Set-ADAccountPassword cmdlet 通过 PowerShell 重置 Active Directory 用户的密码。此 cmdlet 是 Windows PowerShell 模块的 Active Directory 的一部分(在桌面 Windows 版本中,它是 RSAT 的一部分)。将此模块导入到您的 PowerShell 会话中:

Import-module ActiveDirectory

要重置用户jliebert的密码并设置新密码myP@ssw0rd112,请运行以下命令:

Set-ADAccountPassword jliebert -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “myP@ssw0rd112” -Force -Verbose) -PassThru

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

要自动为用户生成复杂的密码,您可以使用使用 PowerShell 生成强随机密码一文中描述的GeneratePassword 方法。

默认情况下,cmdlet 返回对象并在控制台中不显示任何内容。要显示AD中用户对象的信息,可以使用-PassThru参数。

您可以指定 sAMAccountName(如我们的例子)、objectGUID、用户的 SID 或 DN(专有名称,例如 CN=jliebert,OU=Users,DC=a-d,DC=com)作为用户名。

如果修改用户密码时没有指定-Reset参数,则必须手动输入新旧账户密码。

注意。如果使用 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

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

您现在可以为用户设置新密码:

Set-ADAccountPassword jliebert -Reset -NewPassword $NewPasswd -PassThru

重置用户密码时,如果帐户之前被锁定,您可以强制解锁该帐户(要了解该帐户是在哪台计算机上被锁定的,请阅读文章如何在 Active Directory 中查找帐户锁定的来源?):

Unlock-ADAccount -Identity jliebert

要强制用户在下次登录域时更改密码,请运行以下命令:

Set-ADUser -Identity jliebert -ChangePasswordAtLogon $true

您可以将密码更改命令和更改密码的要求(这是 userAccountControl 对象属性)与 PowerShell 语句结合起来:

Set-ADAccountPassword jliebert -NewPassword $NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $True

使用 Get-ADUser cmdlet,您可以确保密码已成功重置并显示帐户密码更改的最后日期:

Get-ADUser jliebert -Properties * | select name, pass*

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

重置密码后,EventID 4724 将在域控制器 (DC) 安全日志中注册。此事件可以帮助您识别重置用户密码的帐户。

您可以使用 PowerShell 命令根据有效的密码策略设置来了解用户的密码何时过期:

Get-ADUser -Identity simonecole -Properties msDS-UserPasswordExpiryTimeComputed | select-object @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }}

如何使用 PowerShell 更改多个 AD 用户的密码?

上面,我们向您展示了如何使用 PowerShell 重置单个 AD 用户的密码。现在让我们看看另一种场景,您需要一次更改多个用户的密码。

例如,您希望将销售部门所有员工的密码重置为相同的密码,并强制他们在下次登录时更改密码。您可以使用 Get-ADUser -Filter 命令来选择在某一属性中具有特定值的用户:

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

您可以使用以下 PowerShell 脚本重置指定 CSV 文件中每个用户帐户的密码:

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 use 控制台命令重置域用户密码。要获取有关域用户的信息,请运行以下命令:

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

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

上次登录值显示用户上次登录域的时间。您可以获取有关 Active Directory 中用户登录历史记录的更多信息。

要重置该用户的密码,请运行以下命令:

net user jliebert /domain *

[玩转系统] 如何使用 PowerShell 和 ADUC 重置 Active Directory 用户密码

输入新密码并确认:

Type a password for the user: xxxx
Retype the password to confirm: xxxx
The command completed successfully.

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯