Войти

Показать полную графическую версию : [решено] Поиск пользователей с правами администраторов


Jonik-Mnimonik
09-11-2009, 09:50
Доброе время суток!
Помогите написать скрипт на vbs, который выводит список пользователей с правами администратора на компьютере Win Xp. Можно ли это сделать через WMI Code Creator?

amel27
09-11-2009, 11:13
список пользователей с правами администратора »
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

amel27
09-11-2009, 12:20
тогда еще один немного извращенный способ, но в домене работает быстрей: :)
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
К сожалению ни чего не выводит.(Пустая строка). »
Хм, а с домашнего компьютера выводит, чтож всем спасибо за ответы, скрипты рабочие, буду разбираться в дальше.

amel27
10-11-2009, 04:16
можно ли эти скрипты запустить на удалённой машине? »
можно:
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