26 Октября, 2011

Power Shell выгрузка членов группы

Dm Isu
Доброго времени суток.
Для начало эпичный котэ почти в тему если бы их было несколько


Сразу скажу, скрипт не претендует на оригинальность идеи и исполнения. Он добавлен сюда ради памяти и не более того. Вы можете с удовольствием использовать его на свой страх =) и риск конечно же!



Скрипт будет искать группы по прификсу во всем домене, а не по полному совпадению.

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

Собственно кот:

#Приф группы
$PRX = "******"
#LDAP к корню домена
$LDAP_DIR = " LDAP://DC=****,DC=****,DC=***** "
#####################################################################
$OU = [ADSI] $LDAP_DIR
$search = New-Object system.DirectoryServices.DirectorySearcher
$search.SearchRoot = $OU
$search.Filter = "(&(objectCategory=Group))"
$search.PageSize = 100000
$TMP = $search.Findall() | select path
$TMP = $TMP | where-object {$_ -match $PRX}
$PRX = $TMP -replace '@{Path=' -replace '}'
if($PRX.Count -gt 0){
For([INT]$INDEX=0;$INDEX -lt $PRX.Count;$INDEX++)
{
$PER2 = $PRX[$INDEX] -replace 'LDAP://CN=' -replace '[(].+$' -replace ',OU.+$'
$PATH = "." + $PER2 + ".txt"
$objGr=[ADSI] $PRX[$INDEX]
$TMP = $objGr.member
$TMP = $TMP -replace 'CN=' -replace '[(].+$' -replace ',OU.+$'
Set-Content -Path $PATH -Value $TMP
}
} ELSE {
$PER2 = $PRX -replace 'LDAP://CN=' -replace '[(].+$' -replace ',OU.+$'
$PATH = "." + $PER2 + ".txt"
$objGr=[ADSI] $PRX
$TMP = $objGr.member
$TMP = $TMP -replace 'CN=' -replace '[(].+$' -replace ',OU.+$'
Set-Content -Path $PATH -Value $TMP
}
или введите имя

CAPTCHA