【问题标题】:Reset AD User Password using PowerShell Issue使用 PowerShell 问题重置 AD 用户密码
【发布时间】:2019-02-14 07:13:00
【问题描述】:

我正在检查使用 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)

我真正需要的是能够将 Windows 用户登录名 从服务器父域(即example.local)放入脚本中,例如,example.local,顺便说一句。 p>

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

我怎样才能做到这一点?

【问题讨论】:

  • 我认为您缺少核心概念。如果您有权在父域中重置密码,那么由于传递信任,您可以在所有子域中执行相同操作。现在,通过在身份中提供相同的用户名也应该可以跨子域工作。此外,您从哪个系统运行并不重要,因为最终它在同一个林中
  • 您应该先使用Get-ADUser 来查找用户。 -Identity 参数采用以下任何一项:DistinguishedName、GUID、SID 或 SAM 帐户名称。然后,如果您有一个用户对象,您可以将其用于Set-ADAccountPassword cmdlet。请解释John.Doe 是什么。 SamAccountname 可能是用户 UPN 的一部分?

标签: powershell active-directory


【解决方案1】:

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

如果我理解您的问题,您希望使用 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)

与制作的其中一个 cmets 不同,仅仅因为您有信任,并不意味着您将有权更改目标域中的密码。

您在其中运行此进程的 AD 帐户将需要拥有该权限,方法是成为 DC 上其他域的本地管理员组的成员,或者通过策略专门添加到其他域中的 AD(或直接应用到用户所在的 OU 等),或企业管理员的成员。

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

【讨论】:

  • 仍然得到同样的错误:Get-ADUser:找不到具有身份的对象:'John.Doe' under:'DC=example,DC=local',即使我提到了一个 -server 选项,例如, Set-ADAccountPassword -Identity $ADuser -Reset -server subdomain.example.local -NewPassword (ConvertTo-SecureString -AsPlainText $password -Force)
  • Get-ADUser?你在哪里使用Get-ADUser
【解决方案2】:

我发现用于 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)

【讨论】:

  • 仍然得到同样的错误:Get-ADUser:找不到具有身份的对象:'John.Doe' under:'DC=example,DC=local',即使我提到了一个 -server 选项,例如, Set-ADAccountPassword -Identity $ADuser -Reset -server subdomain.example.local -NewPassword (ConvertTo-SecureString -AsPlainText $password -Force)
猜你喜欢
  • 1970-01-01
  • 2019-01-29
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多