className = "Win32_GroupUser"
compName = "ws_name"
tstUser = "user_name"
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & compName & "\root\cimv2")
Set guCollection = objWMI.ExecQuery("Select * from " & className)
For Each curObj In guCollection
groupComp = Replace(curObj.GroupComponent, """", "")
xPos = InStrRev(groupComp, "Domain=" & compName, -1, vbTextCompare)
If xPos > 0 Then
partComp = Replace(curObj.PartComponent, """", "")
xPos = InStrRev(partComp, "=")
xName = Mid(partComp, xPos + 1)
If StrComp(xName, tstUser, vbTextCompare) = 0 Then
xPos = InStrRev(groupComp, "=")
xName = Mid(groupComp, xPos + 1)
resList = resList & xName & vbCr
End If
Else
Exit For
End If
Next
If resList <> "" Then
WScript.Echo "Учётная запись пользователя " & UCase(tstUser) & " обнаружена в локальных группах:" & vbCr & vbCr & resList
Else
WScript.Echo "Учётная запись пользователя " & UCase(tstUser) & " не обнаружена ни в одной из локальных групп."
End If
Доменные пользователи в локальных группах
Есть проблема. Как можно определить, в каких локальных группах находится доменный аккаунт. Вариант "посмотреть в самих группах" отпадает, я поседею скорее. Права есть админские на локальном компе и просто пользователь в домене. Может кто знает решение или скрипт какой-нить?
Код:
Примечания:
1. Сценарий работает корректно лишь в том случае, когда в списке локальных учётных записей нет "учётки" с именем, которое совпадает с именем какой-либо доменной "учётки".
Для полностью корректного поиска необходимо знать не имена, а SID. Однако для их получения необходимо иметь права аминистратора домена (или выпросить у "сисадмина" таблицу соответствий имён учетных записей и их SID).
2. Вместо ws_name и user_name надо подставить реальные имена "исследуемых" рабочей станции и учётной записи (соответственно).