使用PowerShell问题重置AD用户密码

时间:2019-02-14 07:13:00

标签: powershell active-directory

我正在检查使用PowerShell重置AD用户密码的方法,但发现Set-ADAccountPassword可以正常工作,但是我不确定如何在我的环境中使用它。

我有一个具有许多子域的林:example.local作为主域,x.example.localy.example.comz.example.com作为子域。

我想要实现的功能是能够从位于父域中的服务器重置子域帐户的密码。目前,下面的事情对我有用。

如果从位于子域x.example.local中的服务器运行:

Set-ADAccountPassword -Identity "John.Doe" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "ABCD1234" -Force)

在森林中的任何地方工作:

Set-ADAccountPassword -Identity "CN=Doe, John X.,OU=b,OU=a,DC=x,DC=example,DC=local" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "ABCD1234" -Force)

我真正需要的是能够在服务器父域(即example.local)中将 Windows用户登录名放在脚本中,如下所示,这种方法不能正常工作。

Set-ADAccountPassword -Identity "CN=John.Doe,OU=b,OU=a,DC=x,DC=example,DC=local" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "ABCD1234" -Force)

我该如何实现?

2 个答案:

答案 0 :(得分:0)

我发现用于AD的PowerShell cmdlet在具有多个域的环境中有点愚蠢。他们无法找出受信任的域。您必须将它们明确指向域。您可以使用-Server参数来完成此操作,在该参数中为其指定全限定域名(如果需要,也可以指定特定的DC)。

因此,在您的情况下,这意味着:

Set-ADAccountPassword -Server x.example.local -Identity "CN=John.Doe,OU=b,OU=a,DC=x,DC=example,DC=local" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "ABCD1234" -Force)

答案 1 :(得分:0)

我认为其他答案有些困惑,希望将它们设置正确。

如果我理解您的问题,则想使用该用户的Sam帐户名称代替DN。

尝试一下。

Set-ADAccountPassword -Identity "Jdoe" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "ABCD1234" -Force)

JDOE是John Doe的登录ID。 如果要在其他域中执行此操作,请添加-server选项。对于childdomain.MyDomain.local域,请按以下方式进行操作:

Set-ADAccountPassword -Identity "Jdoe" -Reset -server ChilDomain.MyDomain.Local -NewPassword (ConvertTo-SecureString -AsPlainText "ABCD1234" -Force)

与所发表的评论之一不同,仅仅是因为您信任,并不意味着您有权在目标域中更改密码。

运行此过程的AD帐户需要具有该权限,既可以通过DC上另一个域的本地管理员组中的成员身份,也可以通过策略专门添加到另一个域中的AD中(或直接应用)到用户的OU中,等等)或企业管理员的成员。

您当然可以为其他域中的用户使用CN,但是请记住,每个域之间的CN会有所不同。