Как отфильтровать результаты Win32_UserAccount по OU - PullRequest
0 голосов
/ 20 марта 2012

В PowerShell я уже знаю, как использовать DirectoryEntry и DirectorySearcher для получения списка пользователей в определенной OU.Результаты этого метода - в основном то, что я ищу в AD, но кажется, что проще получить ту же информацию с помощью запроса WMI Win32_UserAccount.Мне больше нравятся свойства этого класса, и SID уже имеет правильный формат строки (в первом методе его необходимо преобразовать из шестнадцатеричного байтового массива в строку).

Проблема, возникшая у меня с использованием Win32_UserAccountявляется то, что я не могу найти способ отфильтровать его по OU.Я могу успешно фильтровать по домену и имени, и попробовал несколько догадок с WQL, но не могу найти синтаксис для фильтра OU.Большинство моих попыток приводят к «Неверному запросу».Ниже приведен пример запроса, который работает:

$user = gwmi Win32_UserAccount -filter "name='somebody' AND domain='mydomain'"

Если нет способа отфильтровать это по OU, я вернусь к использованию DirectoryEntry / DirectorySearcher.

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Вы знакомы с бесплатными командлетами AD от Quest?

http://www.quest.com/powershell/activeroles-server.aspx

Вы можете фильтровать пользователей по OU и получать SID в различных форматах:

PS> Get-QADUser SizeLimit 0 -SearchRoot <OU_DistinguishedName>' | fl *sid*

objectSid : 0105000000000005150000006753F33372134F3FF673476FF4023001
Sid       : S-1-5-21-54781788-1045369324-1866953526-501
(...)
1 голос
/ 20 марта 2012

Учитывая, что для класса Win32_Account нет связанных свойств LDAP. Я думаю, что вам не повезло.

Конечно, вы можете использовать это, чтобы получить SID в форматев дополнение к поиску в каталоге вы хотите получить связанные с LDAP данные.

...