我在AD域,我想改变某人的密码(已过期,但我认为是无关紧要的)。
我不是一个ADpipe理员,所以net user <username> * /domain
不起作用。
我可以改变它按CTRL + ALT + DELETE->更改密码input旧密码 ,我有; 有没有一个相当于这个过程的命令行?
实际上,如果您不是域pipe理员(或帐户pipe理员),则相关:对于密码过期的帐户,您必须执行交互式login才能更改密码。
否则,如果您知道其他用户的密码,则可以使用这些凭据启动Powershell会话,并使用@Ryan Bolger刚发布的代码。 甚至更简单:
Set-ADAccountPassword otheruser -oldpassword typeoldpassword -newpassword typenewpassword
****编辑****
忘记上面的一切:你可以用这个命令来做,因为这个命令实际上是一个交互式login。 所以只要做:
Set-ADAccountPassword otheruser
系统会提示您input旧密码,然后input新密码,然后重新input新密码。 我只是testing它! 🙂
如果您知道用户的LDAP专有名称(DN)值,可以使用Powershell来完成,如下所示:
$oldpass = 'XXXXXXX' $newpass = 'XXXXXXX' $user = [ADSI]"LDAP://CN=myuser,OU=MyOU,DC=example,DC=com" $user.ChangePassword($oldpass,$newpass)
我应该注意到,即使密码已经过期,这种方法仍然有效,这是一个很好的奖励。
如果您不知道DN,则只会稍微困难一些,因为您必须先search对用户的引用。 以下是使用adsisearcher
通过sAMAccountName
查找用户的adsisearcher
。 尽pipe您可以使用任何LDAPfilter。 你可以用这个代替上面的$user = blah
行。
$user = ([adsisearcher]"(&(sAMAccountType=805306368)(sAMAccountName=myuser))").FindOne()