Powershell – поиск учетных записей с исключением


Задача: найти все учетные записи в Active Directory за исключением тех, которые находятся в определенном Organizaitional Unit (OU) и ниже.

Такая задача может возникнуть, если у вас учетные записи пользователей размещены по контейнерам соответствующим филиалам, отделам и т.п., и вам нужно исключить какой-то филиал и/или отдел из поиска. Или, например, вам нужно исключить контейнер со служебными учетными записями.

Решение:

Проблема в том, что фильтры стандартных командлетов Active Directory не работают с OU. Точнее конкретное значение DN можно указать, но поддерево уже нет.

Поэтому используем два шага:

1.       Находим то, что нам нужно исключить:

$exclude = Get-ADUser  -Filter «*»  -SearchScope Subtree -SearchBase «DC=NA,DC=fabrikam,DC=com»  | Select -Exp  DistinguishedName

 

2.       Теперь выполняем основной поиск и отбрасываем найденное на первом шаге:

$res = Get-ADUser -Filter «*» | where {$exclude -notcontains $_.DistinguishedName}

 

Можно использовать немного другие средства:

1.       Для исключения:

$exclude = Get-ADUser  -Filter «*»  -SearchScope Subtree -SearchBase «DC=NA,DC=fabrikam,DC=com»

 

2.       Основной поиск:

$res = Get-ADUser -Filter «*» | Compare-Object -ReferenceObject $exclude -PassThru -property distinguishedName

 

Указание свойства для сравнения значительно ускоряет получение результата (можете проверить с помощью Measure-Command).

 

Удачи! Улыбка

 

комментария 3

  1. Проще и быстрее будет(хотя результаты с notmatch и notlike примерно одинаковые):
    $res = Get-ADUser -Filter «*» | ? {!$_.DistinguishedName.Contains(«DC=NA,DC=fabrikam,DC=com»)}

  2. […] If you’re familiar with LDAP searches you will probably at some point have been frustrated at the inability to exclude objects in a specific Organisational Unit, i.e “Give me all User objects in the domain, except those in the Sales OU”.   To workaround the problem you typically need to do some scripting. There are several methods by which you exclude objects using Powershell, but I really like the one published by fellow MVP Ilya Sazonov. […]

  3. […] Полезная ссылка: Powershell – поиск учетных записей с исключением […]

Оставьте комментарий