Почему в моем скрипте Powershell пользователь с правами администратора видит значение свойства «enabled» для объекта пользователя AD, а другой пользователь с правами администратора - нет? - PullRequest
1 голос
/ 28 июня 2019

У меня есть скрипт powershell, который вызывает Get-ADUser для создания списка пользовательских объектов из Active Directory. Сценарий обрабатывает список пользователей с помощью логики, которая оценивает значение свойства Enabled пользователя (логическое значение).

Я обнаружил, что оценка свойства Enabled работает, когда скрипт запускается от имени администратора домена. Но когда я запускаю его как администратор альтернативного домена (т. Е. Учетную запись, которую я создал путем копирования пользователя с правами администратора), сценарию не удается оценить свойство Enabled. На самом деле, как будто собственность не существует.

Вот код, который иллюстрирует проблему.

$users = Get-ADUser -Filter "*" -SearchBase "OU=Customers,OU=STORE1,DC=SOME,DC=COMPANY"

foreach($u in $users){
   if($u.Enabled -eq $true) 
   { 
      write-host "Enabled"
   }
 }

Если я запускаю его от имени администратора, код выводит «Включено» для включенных пользователей AD в списке. Но если я запускаю его как пользователь с правами администратора (созданный копированием Администратора), я не получаю никакого вывода вообще.

Чтобы дополнительно проиллюстрировать проблему, если я запускаю этот код от имени администратора

 $users | ForEach-Object{$_.Enabled}

скрипт выводит

 True
 True
 False
 True
 ... etc

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

У вас есть идеи, почему это так?

Ответы [ 3 ]

1 голос
/ 28 июня 2019

Проблема будет существовать с разрешениями для созданной вами учетной записи Alt DA.

  1. Убедитесь, что на вкладке безопасности ADUC есть настройки Чтение / Запись для userAccountControl.
  2. Убедитесь, что нет никаких OU GPO, которые мешали бы ему видеть эти настройки.Подтвердите это, проверив объекты групповой политики OU, примененные к исходной учетной записи DA

Нет проблем с частью PowerShell этой команды.Вы можете подтвердить это, запустив ADUC в качестве каждого из пользователей и проверив настройки случайных пользователей, другие элементы будут выделены серым цветом.

0 голосов
/ 28 июня 2019

@ Дрю прав, что проблема userAccountControl, но я не нашел свойства на вкладке безопасности для OU, который я запрашиваю в ADUC.Я нашел статью, описывающую, как установить это с помощью ADSI (https://briandesmond.com/blog/delegating-enable-disable-account-rights-in-active-directory/). Следуя этим инструкциям (с учетом поправок для другой версии AD), я добавил своего пользователя alt admin и предоставил доступ READ для userAccessControl. Теперь скрипт работает, как и ожидалось..

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

0 голосов
/ 28 июня 2019

Почему бы просто не использовать ...

Get-Member

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

Нет реальной причины использовать явные if или ForLoop для получения этих результатов. Вы можете просто сделать это.

(Get-ADUser -Filter "*" -SearchBase $SearchDN.DistinguishedName) | 
Select-Object -Property SamAccountName, Enabled | 
Sort-Object -Property Enabled | 
Format-Table -AutoSize

Также взгляните на…

Поиск-ADAccount

... командлет и протестируйте его на обоих аккаунтах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...