Active Directory Powershell не имеет доступа внутри скрипта, но может запустить команду из командной строки

Кажется, у меня странная проблема с правами доступа к Active Directory. Пользователь, запускающий этот скрипт, имеет доступ к изменению атрибутов активного каталога и может делать это из командной строки, но не может запустить команду внутри скрипта.

Команда, которую я пытаюсь запустить, такова:

Set-ADUser -identity $user.DistinguishedName -replace @{info="1"}

эта команда запускается и выполняется в командной строке Powershell. Командная строка также запускается от имени пользователя, запускающего скрипт. Таким образом, у пользователя есть право изменять атрибуты активного каталога. Однако, когда я помещаю эту команду в сценарий, я получаю проблему с разрешением.

В моем сценарии это блок, который вызывает ошибку:

       try{
            Set-ADUser -identity $user.DistinguishedName  -replace @{info="1"}
            Set-ADUser -identity $username  -replace @{employeeID="<not set>"}
            Logwrite "Employee ID: Cleared!"
            }
        catch{
            #Update Log Of Error

            $errorcountforemail = $errorcountforemail + 1
            logwrite "Employee ID:******* [FAILED] *******"
            $errortest = $_
            Write-Output $_
            Out-File -FilePath $logfile2 -Append -InputObject "`n" -Encoding ascii -Width 50
            Out-File -FilePath $logfile2 -Append -InputObject "Problem setting ad user for $username" -Encoding ascii -Width 50
            Out-File -FilePath $logfile2 -Append -InputObject $_ -Encoding ascii -Width 50
            Out-File -FilePath $logfile2 -Append -InputObject "`n" -Encoding ascii -Width 50
        }

Это ошибка с именами, измененными в целях конфиденциальности.

*---------------------* Errors for: ############## *---------------------*



Problem setting ad user for ################
Set-ADUser : Insufficient access rights to 
perform the operation
At C:\##################.ps1:199 char:13
+             Set-ADUser -identity 
$user.DistinguishedName  -replace @{ ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: 
(#########################:ADUser) 
[Set-ADUse    r], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServe
r:8344,Microsoft.ActiveDirectory.Management.Com   
 mands.SetADUser


Вещи, которые я пробовал:

-запуск от имени администратора и с максимальными привилегиями.

-запуск скрипта в пакетном файле, который запускает его от имени администратора

-форсирование учетных данных следующим образом: Set-ADUser -identity $user.DistinguishedName -credentials $domaincredential -replace @{info="1"} с учетными данными этого пользователя, потому что у него есть доступ для внесения этих изменений.


Есть предположения?


person Matthew Decarlo    schedule 13.11.2019    source источник
comment
Вы можете проверить, является ли запуск скрипта проблемой, поместив эту единственную команду в файл .ps1, а затем попросив пользователя запустить файл .ps1. Если так работает, то проблема явно в другом.   -  person Bill_Stewart    schedule 13.11.2019
comment
Я только что попробовал это, и это работает. Значит, есть что-то, что его ломает. Я только что сделал такой скрипт в отдельном файле, и он работает: Import-Module activedirectory try{ Set-ADUser -Identity mdecarlo -Replace @{info="1"} } catch{ Write-Output $_ }   -  person Matthew Decarlo    schedule 13.11.2019
comment
Теперь, когда вы знаете, что проблема заключается в сценарии, который вы используете для запуска команды, вы можете загрузить его в отладчике (для этого может быть полезна ISE), запустить его от имени другого пользователя, установить точку останова за несколько строк до ваша строка кода выполняется, выполните ее и посмотрите, где/почему она не работает.   -  person Bill_Stewart    schedule 13.11.2019
comment
Итак, после отладки я обнаружил, что на самом деле у него нет доступа для редактирования отключенных пользователей, но у него есть доступ для редактирования обычных пользователей, и я протестировал команду в своей собственной учетной записи пользователя, которая включена. Я сделал ошибку в своих тестах не тестируя его на отключенном пользователе. Итак, я думаю, все, что мне нужно сделать, это дать ему доступ для редактирования отключенных пользователей, потому что именно там находятся эти пользователи. и тогда это должно работать. Спасибо за помощь :) Разрешения все еще очень новы для меня.   -  person Matthew Decarlo    schedule 13.11.2019


Ответы (1)


Моя проблема заключалась в разрешении проблемы с отключенными пользователями OU. Я дал пользователю разрешение редактировать отключенных пользователей, и теперь он работает по назначению; это не было проблемой с моим кодом.

person Matthew Decarlo    schedule 13.11.2019