1

Тема: VBScript: Проверка членства в группах для указанного пользователя

Иногда бывает необходимо писать логон-скрипты, в которых производятся определённые действия (например, подключаются сетевые диски) в зависимости от членства текущего пользователя в определённых группах. При этом бывает важно не только явное членство, но и неявное (пользователь входит в группу, которая сама входит в другую группу и т.д.). Приведённая ниже в скрипте процедура возвращает список всех групп, в которые входит указанный пользователь.

Set WshNet = CreateObject("WScript.Network")
usrDomain = WshNet.UserDomain
usrPath = "WinNT://" & usrDomain & "/" & WshNet.UserName
outGr = ""
GetGroups usrDomain, usrPath, outGr
If Right(outGr, 2) = VbCrLf Then outGr = Left(outGr, Len(outGr)-2)
WScript.Echo outGr

' Процедура возвращает список групп, разделённых переводами строки,
' в которые входит (как явно, так и неявно) указанный доменный пользователь.
' Параметры:
' UserDomain - имя домена.
' ADsPath - имя пользователя в формате "WinNT://domain/user".
' outGroups - выходная переменная (строка), заполняется процедурой.
Sub GetGroups(UserDomain, ADsPath, outGroups)
    Set Container = GetObject("WinNT://" & UserDomain)
    Container.Filter = Array("Group")
    For Each Group In Container
        If Group.IsMember(ADsPath) Then
            If InStr(outGroups, Group.Name & VbCrLf) = 0 Then
                outGroups = outGroups & Group.Name & VbCrLf
            End If
            GetGroups UserDomain, Group.ADsPath, outGroups
        End If
    Next
End Sub
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.