Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Узнать содеожание локальной группы (http://forum.oszone.net/showthread.php?t=221928)

SANIOK_AV 01-12-2011 11:44 1807150

Узнать содеожание локальной группы
 
Доброго времени суток!
Код:

net localgroup
перечисляет все группы,
Код:

net user
перечисляет всех пользователей.
Подскажите пожалуйста, как можно в cmd узнать содержание (какие пользователи являются членами) одной из локальной групп в ОС ХР?
Заранее благодарен!

DmitriiV 01-12-2011 13:30 1807216

После localgroup укажите имя группы (через пробел).
Названия групп, содержащие пробелы, заключайте в кавычки.

Loran_rus 01-12-2011 14:08 1807237

При помоши DsGet Group, файл можно взять из %SystemRoot%\System32\Dsget.exe в Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2008
Код:

dsget group "CN=Имя группы,CN=Users,DC=Ваш домен,DC=Зона домена" -members
Или можно например таким VBS скриптом
Код:

Dim objArgs, strGroupDN
set objArgs = WScript.Arguments
if objArgs.Count <> 1 then
 Dim objRootDSE
 set objRootDSE = GetObject("LDAP://RootDSE")
 strGroupDN = "cn=Имя группы,cn=Users," & objRootDSE.Get("defaultNamingContext")
else
 strGroupDN = objArgs.Item(0)
end if

Dim dicSeenGroupMember
set dicSeenGroupMember = CreateObject("Scripting.Dictionary")
Wscript.Echo "Members of " & strGroupDN & ":"
DisplayMembers "LDAP://" & strGroupDN, " ", dicSeenGroupMember

Function DisplayMembers (strGroupADsPath, strSpaces, dicSeenGroupMember)
 Dim objGroup, objMember
 set objGroup = GetObject(strGroupADsPath)
 for each objMember In objGroup.Members
  Wscript.Echo strSpaces & objMember.Get("distinguishedname")
  if objMember.Class = "group" then
  if dicSeenGroupMember.Exists(objMember.ADsPath) then
  Wscript.Echo strSpaces & " ^ already seen group member " & "(stopping to avoid loop)"
  else
  dicSeenGroupMember.Add objMember.ADsPath, 1
  DisplayMembers objMember.ADsPath, strSpaces & " ", dicSeenGroupMember
  end if
  end if
 next
End Function

P.S. Прочитал не внимательно вопрос и дал ответ не в тему, но может кому пригодиться

SANIOK_AV 01-12-2011 15:20 1807296

Спасибо всем большое!

DmitriiV 02-12-2011 10:55 1807849

Для решения столь простой задачи с помощью сценария вполне достаточно возможностей провайдера WinNT:
Код:

Dim objArgs, objGroup, objWsNet, objItem
Dim strDomain, strGroup, strList
Set objArgs = WScript.Arguments
If objArgs.Count > 0 Then
    For i = 0 To objArgs.Count - 1
        strGroup = objArgs.Item(i)
        Set objWsNet = CreateObject("WScript.Network")
        strDomain = objWsNet.UserDomain
        Set objWsNet = Nothing
        On Error Resume Next
        Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
        If Err.Number = 0 Then
            For Each objItem In objGroup.Members
                If LCase(objItem.Class) = "user" Then strList = strList & objItem.Name & vbNewLine
            Next
            Set objGroup = Nothing
            If Len(strList) > 0 Then
                WScript.Echo strList
            Else
                WScript.Echo "В группе " & UCase(strGroup) & " нет пользователей."
            End If
        Else
            WScript.Echo "Ошибка " & Err.Number & " доступа к объекту группы " & UCase(strGroup) & vbNewLine & _
                    Err.Description
            Err.Clear
        End If
        strList = vbNullString
    Next
End If
Set objArgs = Nothing
WScript.Quit 0


TAluberT2 28-04-2020 20:39 2919306

я так получаю список пользунов имя которых c BUH начинается в файл
Код:

net localgroup "Пользователи удаленного рабочего стола" | findstr /B /I /M "BUH" > C:\TMP\USER_BUH.LST


Время: 18:15.

Время: 18:15.
© OSzone.net 2001-