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

Ste*_*nio 4 windows active-directory

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

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

我可以按 CTRL+ALT+DELETE->Change Password 输入我拥有的旧密码来更改它;是否有与此过程等效的命令行?

cur*_*par 5

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

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

Set-ADAccountPassword otheruser -oldpassword typeoldpassword -newpassword typenewpassword
Run Code Online (Sandbox Code Playgroud)

**** 编辑 ****

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

Set-ADAccountPassword otheruser
Run Code Online (Sandbox Code Playgroud)

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


Rya*_*ger 3

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

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

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

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

$user = ([adsisearcher]"(&(sAMAccountType=805306368)(sAMAccountName=myuser))").FindOne()
Run Code Online (Sandbox Code Playgroud)