31 Января, 2011

Power Shell парсит AD

Dm Isu
Доброго времени суток.
...... ... ...
.....

Что то мысли про вступление не идут, приступим к делу...
решил запостить вот такую памятку про то как PShell парсит AD.

#Скажем PShellу где хотим парсить
$OU = [ADSI] "LDAP://OU=Test_OU,DC=ad,DC=tested,DC=com"

#создадим особую переменную для поиска, которая призовёт высшие силы DirectoryServices
$search = New-Object system.DirectoryServices.DirectorySearcher
$search.SearchRoot = $OU

#По умолчанию PShell обрабатывает всего 1000 обьектов, но их может быть гораздо больше.
$search.PageSize = 10000

#фильтр может быть разный но без него него получим все объекты

#такой фильтр для поиска контактов
# $search.Filter = "(&(objectCategory=User)(objectClass=contact))"
#Для пользователей
# $search.Filter = "(objectCategory=User)"
#Для компьютеров
# $search.Filter = "(objectCategory=computer)"
#Для групп
# $search.Filter = "(objectCategory=Group)"
#и т.д.

#Команда на пуск прессинга, оставим только колонку "path"

$search.Findall() | select path

#Получили списочек неких объектов в AD, а не добавить ли их всех в какую нибудь группу к примеру.
#Тогда нужно будет профиксить наш список ведь в колонке Path много лишнего.
#Берём список и запихиваем в переменную

$TMP = $search.Findall() | select path

# убираем заголовок и лишние символы
$TMP = $TMP -replace '@{Path=LDAP://'
$TMP = $TMP -replace -replace "}"
#теперь у нас есть список годный для добавления его в группу


#Добавим перемену с группой

$objGr = [ADSI] "LDAP://CN=Test_group,OU=Test_OU,DC=ad,DC=tested,DC=com"
#Добавляем
$objGr.member.add($TMP)
#Записываем
$objGr.SetInfo()
или введите имя

CAPTCHA