Назад | Перейти на главную страницу

Проблема с разрешениями PowerShell / ADSI для задач, связанных с AD

Я работаю над сценарием PS, который предоставит пользователям графический интерфейс и несколько кнопок для выполнения некоторых основных задач, таких как разблокировка учетной записи, включение / отключение, изменение паролей и убийство процессов / выход пользователя из системы. Части, которые НЕ работают: включение / отключение пользователей и изменение паролей.

Прежде всего, все работает как администратор домена, но я не могу сделать пользователя администратором домена, поэтому, пожалуйста, не предлагайте этого :)

Вот часть смены пароля:

    $name = "osman"
    $Searcher = [ADSISearcher]"(sAMAccountName=$Name)"
    $Results = $Searcher.FindOne()
    $password = "pezevenk@321"

    [string]$adspath = $Results.Properties.adspath
    $enable = [ADSI]$adspath
    $enable.psbase.invoke("SetPassword", $password)
    $enable.psbase.CommitChanges()

Ошибка довольно общая:

Exception calling "Invoke" with "2" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
At line:14 char:13
+             $enable.psbase.invoke("SetPassword", $password)

Теперь, очевидно, я пытался дать пользователю надлежащие разрешения еще до того, как попытался сделать это: пользователь, с которым я запускаю это, имеет права «сбросить пароль» и «изменить пароль», делегированные в папке «Пользователи» в AD. который включает всех пользователей.

Есть ли способ узнать, какое именно разрешение мне не хватает? Вы можете придумать что-нибудь еще, что потребуется?

Изменить: это разрешения для OU:

"CN=Users,DC=domainname,DC=root,DC=com","All","User","ReadProperty, GenericExecute","Descendents","00000000-0000-0000-0000-000000000000","bf967aba-0de6-11d0-a285-00aa003049e2","InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","Pwd-Last-Set","User","ReadProperty, WriteProperty","Descendents","bf967a0a-0de6-11d0-a285-00aa003049e2","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","Lockout-Time","User","WriteProperty","Descendents","28630ebf-41d5-11d1-a9c1-0000f80367c1","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Account-Control","User","WriteProperty","Descendents","bf967a68-0de6-11d0-a285-00aa003049e2","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Force-Change-Password","User","ExtendedRight","Descendents","00299570-246d-11d0-a768-00aa006e0529","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Change-Password","User","ExtendedRight","Descendents","ab721a53-1e2f-11d0-9819-00aa0040529b","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Change-Password","User","ExtendedRight","Descendents","ab721a53-1e2f-11d0-9819-00aa0040529b","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","True","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Force-Change-Password","User","ExtendedRight","Descendents","00299570-246d-11d0-a768-00aa006e0529","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","True","ContainerInherit","InheritOnly"

Вы можете редактировать исходный AD.msc и добавлять функции по своему усмотрению.
Вот несколько ссылок:
Пользовательская консоль AD
Сброс пароля правой кнопкой мыши
Разблокировать правой кнопкой мыши
Добавить дополнительные столбцы

Я заметил проблему: конечный пользователь «osman», на котором я это тестировал, был администратором домена и, по-видимому, администраторы домена не наследуют делегирование (не знаю почему, насколько я могу судить, это не задокументировано). Все остальные, не являющиеся администраторами, работают нормально! Спасибо за все ваши предложения.

Единственный известный мне способ установить пароль для пользователя - это эта команда. Set-ADAccountPassword -Identity $ Name -Reset -NewPassword (ConvertTo-SecureString $ Password -AsPlainText -force) -PassThru Он запросит у них текущий пароль или, если вы оставите NewPassword, он предложит оба. Если вы пытаетесь предоставить эти права сотруднику службы поддержки, убедитесь, что вы не тестируете учетную запись администратора, поскольку они никогда не смогут изменить пароль для пользователя с правами администратора. Они защищены атрибутом adminCount = 1. Я успешно разрешил Персонал службы поддержки может изменять пароли в ADUC с разрешением на изменение пароля в пользовательском OU. В итоге мы купили продукт, позволяющий пользователям сбрасывать собственные пароли. Я знаю, что это не совсем ответ на ваш вопрос, но я надеюсь, что часть этой информации поможет.