Показать полную графическую версию : [решено] Поиск пользователей с правами администраторов
Jonik-Mnimonik
09-11-2009, 09:50
Доброе время суток!
Помогите написать скрипт на vbs, который выводит список пользователей с правами администратора на компьютере Win Xp. Можно ли это сделать через WMI Code Creator?
список пользователей с правами администратора »
Set objGRP = GetObject("WinNT://./Administrators,Group")
For Each objMember In objGRP.Members
strList = strList & objMember.Name & vbCRLF
Next
WScript.Echo strList
Можно ли это сделать через WMI Code Creator? »
классы: Win32_Group, Win32_GroupUser
Petya V4sechkin
09-11-2009, 11:14
Jonik-Mnimonik, как-то так:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("SELECT Domain, Name FROM Win32_Group WHERE LocalAccount = True AND SID = 'S-1-5-32-544'")
For Each objItem In colItems
For Each objAdmin In objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Group.Domain='" & objItem.Domain & "',Name='" & objItem.Name & "'} WHERE AssocClass = Win32_GroupUser")
WScript.Echo objAdmin.Name
Next
Next
тогда еще один немного извращенный способ, но в домене работает быстрей: :)
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objNet = CreateObject("WScript.Network")
Set objREx = CreateObject("VBScript.RegExp")
objREx.Pattern = "^.*\.Domain=""([^""]+)"",Name=""([^""]+)"".*$"
objREx.IgnoreCase = True
For Each objGroup In objWMI.ExecQuery _
("SELECT * FROM Win32_Group WHERE LocalAccount=TRUE And SID='S-1-5-32-544'")
For Each objItem In objWMI.ExecQuery _
("SELECT * FROM Win32_GroupUser WHERE GroupComponent=""Win32_Group.Domain='"& objNet.ComputerName &"',Name='"& objGroup.Name &"'""")
WScript.Echo objREx.Replace(objItem.PartComponent,"$1\$2")
Next
Next
Jonik-Mnimonik
09-11-2009, 17:45
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _ ("SELECT Domain, Name FROM Win32_Group WHERE LocalAccount = True AND SID = 'S-1-5-32-544'")
For Each objItem In colItems
For Each objAdmin In objWMIService.ExecQuery _ ("ASSOCIATORS OF {Win32_Group.Domain='" & objItem.Domain & "',Name='" & objItem.Name & "'} WHERE AssocClass = Win32_GroupUser") Wcript.Echo objAdmin.Name
Next
Next
»
К сожалению ни чего не выводит.(Пустая строка).
Set objGRP = GetObject("WinNT://./Administrators,Group")
For Each objMember In objGRP.Members
strList = strList & objMember.Name & vbCRLF
Next
WScript.Echo strList
»
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objNet = CreateObject("WScript.Network")
Set objREx = CreateObject("VBScript.RegExp")
objREx.Pattern = "^.*\.Domain=""([^""]+)"",Name=""([^""]+)"".*$"
objREx.IgnoreCase = True
For Each objGroup In objWMI.ExecQuery _ ("SELECT * FROM Win32_Group WHERE LocalAccount=TRUE And SID='S-1-5-32-544'")
For Each objItem In objWMI.ExecQuery _ ("SELECT * FROM Win32_GroupUser WHERE GroupComponent=""Win32_Group.Domain='"& objNet.ComputerName &"',Name='"& objGroup.Name &"'""") WScript.Echo objREx.Replace(objItem.PartComponent,"$1\$2")
Next
Next
»
Работает. А можно ли эти скрипты запустить на удалённой машине?
Jonik-Mnimonik
09-11-2009, 19:47
К сожалению ни чего не выводит.(Пустая строка). »
Хм, а с домашнего компьютера выводит, чтож всем спасибо за ответы, скрипты рабочие, буду разбираться в дальше.
можно ли эти скрипты запустить на удалённой машине? »
можно:
strComputer = "MyComputer"
strGroup = "Администраторы"
Set objGRP = GetObject("WinNT://"& strComputer &"/"& strGroup &",Group")
For Each objMember In objGRP.Members
strList = strList & objMember.Name & vbCRLF
Next
WScript.Echo strList
strComputer = "MyComputer"
Set objWMI = GetObject("winmgmts:\\"& strComputer &"\root\cimv2")
Set objNet = CreateObject("WScript.Network")
Set objREx = CreateObject("VBScript.RegExp")
objREx.Pattern = "^.*\.Domain=""([^""]+)"",Name=""([^""]+)"".*$"
objREx.IgnoreCase = True
For Each objGroup In objWMI.ExecQuery _
("SELECT * FROM Win32_Group WHERE LocalAccount=TRUE And SID='S-1-5-32-544'")
For Each objItem In objWMI.ExecQuery _
("SELECT * FROM Win32_GroupUser WHERE GroupComponent=""Win32_Group.Domain='"& strComputer &"',Name='"& objGroup.Name &"'""")
WScript.Echo objREx.Replace(objItem.PartComponent,"$1\$2")
Next
Next
Jonik-Mnimonik
11-11-2009, 19:51
Огромное спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.