Сброс пароля пользователя AD с помощью PowerShell

Я проверял способ сброса пароля пользователя AD с помощью PowerShell и обнаружил, что Set-ADAccountPassword он работает, однако я не уверен, как бы я использовал это в своей среде.

У меня есть лес со многими поддоменами: example.local в качестве основного домена и x.example.local, y.example.com и z.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, что, кстати, не работает.

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

Как я могу этого добиться?


person Nikhil Tamhankar    schedule 14.02.2019    source источник
comment
Я думаю, вам не хватает основной концепции. Если у вас есть разрешение на сброс пароля в родительском домене, вы можете сделать то же самое во всех дочерних доменах благодаря транзитивному доверию. Теперь, указав одно и то же имя пользователя в удостоверении, оно должно работать и в дочерних доменах. Кроме того, не имеет значения, из какой системы вы работаете, потому что, в конце концов, она находится в одном и том же лесу.   -  person Ranadip Dutta    schedule 14.02.2019
comment
Вам следует использовать Get-ADUser сначала найти пользователя. Для параметра -Identity требуется любое из следующих значений: DistinguishedName, GUID, SID или имя учетной записи SAM. Затем, если у вас есть пользовательский объект, вы можете использовать его для Set-ADAccountPassword. Пожалуйста, объясните, что такое John.Doe. Возможно, имя SamAccountname или часть имени участника-пользователя?   -  person Theo    schedule 15.02.2019


Ответы (2)


Я думаю, что в других ответах есть некоторая путаница, и я надеюсь исправить их.

Насколько я понимаю ваш вопрос, вы хотите использовать имя учетной записи Sam вместо DN для пользователя.

Попробуй это.

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

где JDOE является идентификатором входа Джона Доу. Если вы хотите сделать это в другом домене, добавьте параметр -server. Для домена childdomain.MyDomain.local сделайте это следующим образом:

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

В отличие от одного из сделанных комментариев, тот факт, что у вас есть доверие, не означает, что у вас будет разрешение на изменение паролей в целевом домене.

Ваша учетная запись AD, в которой вы запускаете этот процесс, должна иметь это разрешение либо путем членства в группе локальных администраторов другого домена на контроллере домена, либо путем специального добавления в AD в другом домене с помощью политики (или непосредственного применения к OU). в пользователь входит и т. д.), или член корпоративных администраторов.

Вы, конечно, можете использовать CN для пользователя в другом домене, но имейте в виду, что CN будет отличаться для каждого домена.

person Community    schedule 14.02.2019
comment
Все еще получаю ту же ошибку: Get-ADUser: не удается найти объект с идентификатором: «John.Doe» в разделе: «DC = пример, DC = локальный», хотя я упоминаю параметр -server, например, Set-ADAccountPassword -Identity $ADuser -Reset -server subdomain.example.local -NewPassword (ConvertTo-SecureString -AsPlainText $password -Force) - person Nikhil Tamhankar; 15.02.2019
comment
Get-ADUser? Где вы используете Get-ADUser? - person Gabriel Luci; 15.02.2019

Я считаю, что командлеты PowerShell для AD несколько глупы в средах с несколькими доменами. Они не могут определить доверенные домены. Вы должны явно указать их на домен. Вы делаете это с помощью параметра -Server, где вы указываете полное доменное имя (или конкретный контроллер домена, если хотите).

Итак, в вашем случае это будет означать:

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)
person Gabriel Luci    schedule 14.02.2019
comment
Все еще получаю ту же ошибку: Get-ADUser: не удается найти объект с идентификатором: «John.Doe» в разделе: «DC = пример, DC = локальный», хотя я упоминаю параметр -server, например, Set-ADAccountPassword -Identity $ADuser -Reset -server subdomain.example.local -NewPassword (ConvertTo-SecureString -AsPlainText $password -Force) - person Nikhil Tamhankar; 15.02.2019