RU | EN | UA

Ищем пустую группу

Версия для печати Отправить на e-mail
Tag it:
Digg
Technorati
YahooMyWeb
Delicious
blogmarks
Четверг, 21 Сентябрь 2006 | (4259)

Ищем пустую группуИспользуя Active Directory command-line tools, можно написать небольшой скрипт, который покажет все группы домэйна (Domain Groups), в которых нет пользователей (Users).  

А вот и сам скрипт:

@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "Tokens=*" %%a in ('dsquery group') do (
 call :quiet %%a >nul 2>&1
 if "!mbr!" EQU "N" @echo %%a
)
endlocal
goto :EOF
:quiet
set mbr=N
for /f "Tokens=*" %%m in ('dsget group %1 -members') do (
 set mbr=Y
)

 

Комментарии

  1. Цитировать #8 Прохожий
    2006-09-2213:12:42 В одной буквочке вверху ошибся :-) Переписал. Заодно Level убрал :
    Set oRoot = GetObject("LDAP://RootDSE")

    Call ListGroupMembers ( "LDAP://" & oRoot.Get("defaultNamingContext") )

    Sub ListGroupMembers ( ByVal ADPath )

    Set oRoot = GetObject( ADPath )

    For each oOU in oRoot

    if oOU.Class = "group" Then
    HaveMembers = False
    For Each objMember In oOU.Members
    HaveMembers = True
    Exit for
    next
    If NOT HaveMembers Then WScript.Echo "Group " & oOU.distinguishedName & " not have members"
    end if

    if oOU.Class = "organizationalUnit" OR oOU.Class = "container" Then
    Call ListGroupMembers ( "LDAP://" & oOU.distinguishedName )
    end if

    next

    End Sub
  2. Цитировать #7 Прохожий
    2006-09-2213:06:34 Стоп. В cn не лазяеть ....
  3. Цитировать #6 Прохожий
    2006-09-2212:57:36 Хотя Level там можно убрать. Это я делал, когда красиво печатал состав групп с отступами.
  4. Цитировать #5 Прохожий
    2006-09-2212:55:45 Всё-же я люблю делать это VB скриптом. Ловите :
    Set oRoot = GetObject("LDAP://RootDSE")

    Call ListGroupMembers ( "LDAP://" & oRoot.Get("defaultNamingContext") , 0 )

    Sub ListGroupMembers ( ByVal ADPath, ByVal Level )

    Set oRoot = GetObject( ADPath )

    For each oOU in oRoot

    if oOU.Class = "group" Then
    HaveMemebers = False
    For Each objMember In oOU.Members
    HaveMembers = True
    Exit for
    next
    If NOT HaveMembers Then WScript.Echo "Group " & oOU.distinguishedName & " not have members"
    end if

    if oOU.Class = "organizationalUnit" OR oOU.Class = "container" Then
    Call ListGroupMembers ( "LDAP://" & oOU.distinguishedName , Level + 1 )
    end if

    next

    End Sub
  5. Цитировать #4 Прохожий
    2006-09-2212:54:43 А у меня работает. Наверное потому, что IE 7 поставил.
    2 выхода :
    1) Поставить IE 7
    2) В правом верхнем есть кнопочка "версия для печати". Дальше догадаешься? ;-)
  6. Цитировать #3 psysound
    2006-09-2212:52:35 все нормально копипастится
  7. Цитировать #2 shef
    2006-09-2211:11:49 из кода html можно дёрнуть :D
  8. Цитировать #1 Белый котик
    2006-09-2210:32:07 а вот код ну никак не удается выделить и скопировать к себе :( обидно. потестить хотелось

Добавить комментарий

Жирный Курсив Подчеркнутый Ссылка Цитата


Автотранслитерация: выключена

Защитный код

Powered by jComments
Created by Pelican Design Studio - Web 2 You / Hosting by TheystemAdministrator.com / Tech. Support ITStuff.ca - Tips and Tricks for IT Stuff / Фин. Спонсор WEX
Templates by Pelican Web Studio Templates by Pelican Web Design Studio