Компьютерный форум 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=156393)

Jonik-Mnimonik 09-11-2009 09:50 1265427

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

amel27 09-11-2009 11:13 1265488

Цитата:

Цитата Jonik-Mnimonik
список пользователей с правами администратора »

Код:

Set objGRP = GetObject("WinNT://./Administrators,Group")

For Each objMember In objGRP.Members
  strList = strList & objMember.Name & vbCRLF
Next

WScript.Echo strList

Цитата:

Цитата Jonik-Mnimonik
Можно ли это сделать через WMI Code Creator? »

классы: Win32_Group, Win32_GroupUser

Petya V4sechkin 09-11-2009 11:14 1265490

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 1265530

тогда еще один немного извращенный способ, но в домене работает быстрей: :)
Код:

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 1265874

Цитата:

Цитата Petya V4sechkin
Код:

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

»

К сожалению ни чего не выводит.(Пустая строка).

Цитата:

Цитата amel27
Код:

Set objGRP = GetObject("WinNT://./Administrators,Group")
For Each objMember In objGRP.Members
    strList = strList & objMember.Name & vbCRLF
Next
WScript.Echo strList

»

Цитата:

Цитата amel27
Код:

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 1266001

Цитата:

Цитата Jonik-Mnimonik
К сожалению ни чего не выводит.(Пустая строка). »

Хм, а с домашнего компьютера выводит, чтож всем спасибо за ответы, скрипты рабочие, буду разбираться в дальше.

amel27 10-11-2009 04:16 1266307

Цитата:

Цитата Jonik-Mnimonik
можно ли эти скрипты запустить на удалённой машине? »

можно:
Код:

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 1267783

Огромное спасибо.


Время: 10:59.

Время: 10:59.
© OSzone.net 2001-