Войти

Показать полную графическую версию : Стянуть список пользователей определённой группы с удалённого сервера Win (без WMI)


Gudsaf222
18-07-2015, 22:15
Привет парни, стоит не тривиальная задача. Сразу к теме.

Есть сервер (WinServer 2003), на нём есть локальные группы и пользователи в этих группах. Надо удалённо стянуть с этого сервера список пользователей группы "Администраторы".

Обычно это делается при помощи WMI, но для WMI прав нет, есть только консоль MMC и её возможность подключаться к удалённому серверу. Как мне пояснили, при этом используется нулевая сессия. Далее в ММС используем оснастку "Локальные пользователи и группы", там открываем нужную группу, в нашем случае группу админов и видим список пользователей - этот список и есть наша цель.

Теперь представьте что этих серверов чуть больше 600 штук - руками стягивать список пользователей для каждого сервера по очереди не камельфо.

В идеале бы написать скрипт, на том же PowerShell'е, но, беда в том, что я не могу найти командлеты которые могут стянуть список этих пользователей из MMC. (Или сделать это как-то без MMC, но не используя WMI).

У кого какие соображения?

Что я пытался делать:
углубиться в теорию нулевой сессии и подключиться к IPC$ - достиг успеха, подключился (net use \\serv-2\IPC$ "" /user:""). Но я не знаю что делать дальше - уверен есть какое-то WinAPI которым стягивается вся информация с сервера, но где эти функции взять - черт его знает.. Ведь тот же MMC как-то стягивает эту информацию с сервера.

Iska
19-07-2015, 00:34
Обычно это делается при помощи WMI, »
Обычно это делается посредством ADSI ;). WSH:
strComputer = "RemoteMachine"
strGroup = "Administrators"

WScript.Echo "Computer: " & strComputer

Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group")

WScript.Echo "Administrators group members:"

For Each objMember In objGroup.Members
WScript.Echo " " & objMember.Name
Next

Gudsaf222
19-07-2015, 13:30
Обычно это делается посредством ADSI. WSH
Спасибо, но есть вопроc :)
ADSI - это Active Directory Service Interface, а что если у меня будет просто два компьютера в одной локальной сети без Active Directory? Задача остаётся такой же - стянуть группу пользователей с соседнего компа.

Iska
19-07-2015, 15:50
ADSI - это Active Directory Service Interface, а что если у меня будет просто два компьютера в одной локальной сети без Active Directory? Задача остаётся такой же - стянуть группу пользователей с соседнего компа. »
Для работы с доменной структурой Windows могут использоваться поставщики («ADSI providers») «WinNT:» и «ADSI:», для работы с локальной машиной используется только поставщик «WinNT:» (About Active Directory Service Interfaces (Windows) (https://msdn.microsoft.com/en-us/library/aa772161(v=vs.85).aspx)).

Ссылки по теме (обратите внимание на последнюю):
ADSI WinNT Provider (Windows) (https://msdn.microsoft.com/en-us/library/aa772237(v=vs.85).aspx) (и вложенные);
Введение в ADSI (http://www.script-coding.com/ADSI.html);
Провайдер (поставщик) WinNT в скриптах ADSI в VBScript, подключение - AskIt.RU (http://www.askit.ru/custom/progr_admin/m15/15_04_adsi_winnt_provider.htm);
How Can I Run a Script Under Alternate Credentials? - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs (http://blogs.technet.com/b/heyscriptingguy/archive/2004/12/13/how-can-i-run-a-script-under-alternate-credentials.aspx).




© OSzone.net 2001-2012