从命令行更改其他用户密码

从命令行更改其他用户密码

我在 AD 域中,我想更改某人的密码(该密码已过期,但我认为这无关紧要)。

我不是 AD 管理员,因此net user <username> * /domain不起作用。

我可以按 CTRL+ALT+DELETE->更改密码来更改它,输入旧密码我有;这个过程有等效的命令行吗?

答案1

实际上,如果您不是域管理员(或帐户管理员),则这很重要:对于密码已过期的帐户,您必须进行交互式登录才能更改密码。

否则,如果您知道其他用户的密码,则可以使用这些凭据启动 Powershell 会话并使用@Ryan Bolger 刚刚发布的代码。或者更简单:

Set-ADAccountPassword otheruser -oldpassword typeoldpassword -newpassword typenewpassword

**** 编辑 ****

忘记上面的所有内容:您可以使用该命令执行此操作,因为该命令实际上执行了交互式登录。因此只需执行以下操作:

Set-ADAccountPassword otheruser

然后系统会提示您输入旧密码,然后输入新密码,然后重新输入新密码。我刚刚测试过了!:)

答案2

如果您知道用户的 LDAP 专有名称 (DN) 值,则可以使用 Powershell 执行以下操作:

$oldpass = 'XXXXXXX'
$newpass = 'XXXXXXX'
$user = [ADSI]"LDAP://CN=myuser,OU=MyOU,DC=example,DC=com"
$user.ChangePassword($oldpass,$newpass)

我应该指出,即使密码已经过期,此方法仍然有效,这是一个很好的奖励。

如果您不知道 DN,那么这只会稍微困难一些,因为您必须先搜索对用户的引用。这里有一行代码,用于adsisearcher通过 查找用户sAMAccountName。不过,您可以使用任何有意义的 LDAP 过滤器。您可以使用它来代替$user = blah上面的行。

$user = ([adsisearcher]"(&(sAMAccountType=805306368)(sAMAccountName=myuser))").FindOne()

相关内容