Парсинг объектов Active Directory по заданный атрибутам используя PowerShell
#Задаем настройки поиска, данный блок задает их автоматически из вашего домена
$dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$root = $dom.GetDirectoryEntry()
$search = [System.DirectoryServices.DirectorySearcher]$root
#Задаем параметры поиска
$search.PageSize = 10
#Максимальное кол-во элементов для поиска
$search.Filter = "(&(objectClass=user)(!title=*инж*)(mail=test*))"
#Фильтр поиска по заданным атрибутам, рассмотрим его детально:
#что бы объединить несколько условий нам необходимо поставить знак "&" в начале
#objectClass=user или computer указывает на то какой класс объектов мы ищем
#!title=*инж* знак восклицания указывает на обратное,
#а это значит атрибут title не должен содержат в себе слова "Инж"
#mail=test* значит в поле mail в начале должно присутствовать слово "test"
$search.FindAll()
#Запускаем поиск
Немного обработки для дальнейшей работы:
($search.FindAll() | %{$_.path}) - оставить только ldap путь к обьекту
#Задаем настройки поиска, данный блок задает их автоматически из вашего домена
$dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$root = $dom.GetDirectoryEntry()
$search = [System.DirectoryServices.DirectorySearcher]$root
#Задаем параметры поиска
$search.PageSize = 10
#Максимальное кол-во элементов для поиска
$search.Filter = "(&(objectClass=user)(!title=*инж*)(mail=test*))"
#Фильтр поиска по заданным атрибутам, рассмотрим его детально:
#что бы объединить несколько условий нам необходимо поставить знак "&" в начале
#objectClass=user или computer указывает на то какой класс объектов мы ищем
#!title=*инж* знак восклицания указывает на обратное,
#а это значит атрибут title не должен содержат в себе слова "Инж"
#mail=test* значит в поле mail в начале должно присутствовать слово "test"
$search.FindAll()
#Запускаем поиск
Немного обработки для дальнейшей работы:
($search.FindAll() | %{$_.path}) - оставить только ldap путь к обьекту
Комментариев нет:
Отправить комментарий