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

[玩转系统] 发现设置 Adaccountpassword 来重置 AD 密码

作者:精品下载站 日期:2024-12-14 13:17:24 浏览:15 分类:玩电脑

发现设置 Adaccountpassword 来重置 AD 密码


使用 GUI 重置 Active Directory (AD) 用户密码就可以了。但 GUI 并不总是一个有效的工具,尤其是在重置多个用户密码时。幸运的是,您还有一个替代方案,即 Set ADAccountPassword PowerShell cmdlet。

使用自助密码重置解决方案减少服务台呼叫并更新远程用户的缓存凭据,即使在 VPN 之外也是如此。获取 Specops uReset 演示!。

使用PowerShell,您可以快速重置AD用户密码,甚至自动生成复杂的随机密码。如果需要,您还可以创建一个可以批量重置 AD 用户密码的脚本。所有这些您都将在本文中学到。

让我们深入挖掘好东西!

先决条件

要遵循本实践教程,请确保您满足以下要求。

  • 活动目录 (AD) 域。本文将使用名为 HomeLab.Local 的域。
  • 加入域的 Windows PC,您将在其中运行命令或代码来重置 AD 用户密码。本教程将使用 Windows 10 计算机。
  • Windows PC 上已安装远程服务器管理工具 (RSAT)。
  • 您的域用户帐户必须有权重置 AD 用户密码。
  • 您将重置其密码的 AD 用户帐户。本文中的示例将针对 AD 用户名user03。
  • 本教程将使用的代码编辑器,例如 Visual Studio Code 或 Windows PowerShell ISE。请随意使用您喜欢的任何代码编辑器。
  • 本教程假设您已经登录到 Windows PC 并打开了 Windows PowerShell 5.1 窗口。

使用 Set ADAccountPassword Cmdlet 重置 AD 用户密码

Microsoft 方便地提供了 ActiveDirectory PowerShell 模块作为 RSAT 安装的一部分。 ActiveDirectory 模块又包含管理员用来管理 AD 许多方面的 cmdlet。当您需要重置密码时,Set-AdAccountPassword cmdlet 是主要的明星。

重置用户密码

在重置 AD 用户密码之前,您必须准备好两条必需的信息。 AD 用户的身份和要分配的新密码。这两个值是您将提供给 Set ADAccountPassword 的值。

现在您知道要使用哪个 cmdlet 以及所需的最低值,请按照以下步骤重置 AD 用户的密码。

1. 首先,通过在 PowerShell 中运行以下命令来创建新密码的安全字符串表示形式。此命令会将纯文本密码转换为安全字符串并将其保存到变量中。

$NewPwd = ConvertTo-SecureString "MyComplexPassword@123" -AsPlainText -Force

提示:确保新密码符合您组织的 AD 密码复杂性要求。

2. 接下来,通过运行下面的 Set ADAccountPassword 命令重置 AD 用户的密码。 -Identity 参数接受 AD 用户的 ID,而 -NewPassword 参数接受您在上一步中创建的安全密码对象。最后,-Reset 开关指示 cmdlet 重置用户密码。

Set-ADAccountPassword -Identity user03 -NewPassword $NewPwd -Reset

-Identity 参数接受的有效 AD 用户身份值为:

专有名称 (DN)

GUID(对象GUID)

安全标识符(objectSid)

SAM 帐户名称 (sAMAccountName)

除非密码重置过程中出现错误,否则您执行的命令不会在屏幕上显示任何输出。

3. (可选)要强制用户在下次登录时更改密码,请运行下面的 Set-ADUser 命令并使用 -ChangePasswordAtLogon $true 参数。

Set-ADUser -Identity user03 -ChangePasswordAtLogon $true

使用备用管理员凭据重置用户密码

某些组织要求管理员拥有两个用户帐户。一个帐户是普通用户,另一个帐户具有管理员权限。从安全角度来看,这种角色划分的做法很常见。

如果您的帐户属于这种设置,您是否必须从普通用户切换到管理员帐户才能重置 AD 用户的密码?不必要。

借助 -Credential 参数,您可以在运行 Set ADAccountPassword 命令时指定管理员凭据。这样做将在您的管理员帐户的上下文中执行该命令。请按照以下说明进行操作。

1. 首先,使用 Get-Credential cmdlet 捕获您的管理员凭据,并通过运行以下命令将其保存到变量中。

$Credential = Get-Credential

2. 在凭据请求提示处输入您的管理员用户名和密码,然后单击确定

[玩转系统] 发现设置 Adaccountpassword 来重置 AD 密码

3. 最后,运行以下代码片段中的命令来重置 AD 用户的密码。

 # Create the secured password
 $NewPwd = ConvertTo-SecureString "MyComplexPassword@123" -AsPlainText -Force
 
# Reset the AD user password and specify the admin credential context
 Set-ADAccountPassword -Identity user03 -NewPassword $NewPwd -Credential $Credential

重置多个用户密码

到目前为止,您仅使用 Set ADAccountPassword cmdlet 重置了单用户密码。但使用 PowerShell 允许您通过脚本执行批量操作。并且通过脚本,可以一次性重置多个用户的密码。

在开始输入脚本之前,您首先需要定义脚本将执行的高级步骤。根据您迄今为止在本文中学到的内容,您的脚本应该:

  • 从文本文件中读取 AD 用户身份列表。
  • 为每个用户生成一个随机密码。
  • 重置每个用户的密码。
  • 在下次用户登录时强制更改密码。
  • 输出用户身份和新密码。

记住高级步骤后,您现在可以启动代码编辑器并开始编写脚本。

1. 首先,创建包含用户身份列表的文本文件。该文件将作为脚本的输入。在此示例中,文本文件为 C:\Temp\userlist.txt 并包含以下用户 ID。

 user01
 user02
 user03

2. 接下来,打开代码编辑器并创建一个名为 reset-password.ps1 的新文件。将此文件放置在您想要的任何文件夹中。在此示例中,脚本将位于C:\Temp中。

3. 创建 reset-password.ps1 脚本后,复制下面的代码,将其粘贴到代码编辑器中,然后保存脚本。

# Import ActiveDirectory module
 Import-module ActiveDirectory
# Grab list of users from a text file.
 $ListOfUsers = Get-Content C:\Temp\userlist.txt
 foreach ($user in $ListOfUsers) {
     #Generate a 15-character random password.
     $Password = -join ((33..126) | Get-Random -Count 15 | ForEach-Object { [char]$_ })
     #Convert the password to secure string.
     $NewPwd = ConvertTo-SecureString $Password -AsPlainText -Force
     #Assign the new password to the user.
     Set-ADAccountPassword $user -NewPassword $NewPwd -Reset
     #Force user to change password at next logon.
     Set-ADUser -Identity $user -ChangePasswordAtLogon $true
     #Display userid and new password on the console.
     Write-Host $user, $Password
 }

4. 最后,通过在 PowerShell 中执行其完整路径来运行脚本,如下所示。

C:\Temp\reset-password.ps1

因此,下图显示了每个用户及其相应的新密码。您现在可以复制这些密码并将其提供给各自的用户。

[玩转系统] 发现设置 Adaccountpassword 来重置 AD 密码

使用ADSI重置AD用户密码

您知道吗,您还可以使用 PowerShell 中的 Active Directory 服务接口 (ADSI) 重置 AD 用户密码?使用 ADSI 重置密码在 RSAT 不可用且适用于较旧的 PowerShell 版本和任何版本的 Active Directory 的系统中特别有用。

按照以下步骤在 PowerShell 中使用 ADSI 重置 AD 用户密码。

以下步骤假设您使用的计算机没有 RSAT 功能。

1. 查找 AD 用户的专有名称。在此示例中,user03 用户的专有名称为 LDAP://CN=user03,CN=Users,DC=HomeLab,DC=Local。

2. 通过运行以下代码创建包含 AD 用户的 ADSI 对象。

$userid = [ADSI]"LDAP://CN=user03,CN=Users,DC=HomeLab,DC=Local"

注意:专有名称的 LDAP 部分应始终为大写。如果您使用小写字母,则密码重置将不起作用。

现在,通过运行以下命令设置 AD 用户的密码。此命令调用 ADSI 对象的 SetPassword 方法。 $userid.psbase.invoke("SetPassword",'MyComplexPassword@123')

设置 AD 用户的新密码后,运行以下命令来调用 ADSI 对象的 CommitChanges() 方法。此方法将完成对用户密码的更改。 $userid.psbase.CommitChanges()

不再为 Active Directory 中的密码重置调用和帐户锁定而烦恼。免费试用 Specops uReset。

结论

本文旨在教您一种重置 AD 用户密码的更好替代方法。您已经了解了使用 PowerShell 使用 Set-ADAccountPassword cmdlet 和 ADSI 重置 AD 用户密码的不同方法。

凭借您现在掌握的知识,您还会继续使用 GUI 费力地重置密码吗?还是会更进一步,开发一个可重复使用的AD密码功能?

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

取消回复欢迎 发表评论:

关灯