Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Стянуть список пользователей определённой группы с удалённого сервера Win (без WMI) (http://forum.oszone.net/showthread.php?t=302600)

Gudsaf222 18-07-2015 22:15 2530094

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

Есть сервер (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 2530121

Цитата:

Цитата Gudsaf222
Обычно это делается при помощи 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 2530219

Цитата:

Цитата Iska
Обычно это делается посредством ADSI. WSH

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

Iska 19-07-2015 15:50 2530281

Цитата:

Цитата Gudsaf222
ADSI - это Active Directory Service Interface, а что если у меня будет просто два компьютера в одной локальной сети без Active Directory? Задача остаётся такой же - стянуть группу пользователей с соседнего компа. »

Для работы с доменной структурой Windows могут использоваться поставщики («ADSI providers») «WinNT:» и «ADSI:», для работы с локальной машиной используется только поставщик «WinNT:» (About Active Directory Service Interfaces (Windows)).

Ссылки по теме (обратите внимание на последнюю):
ADSI WinNT Provider (Windows) (и вложенные);
Введение в ADSI;
Провайдер (поставщик) WinNT в скриптах ADSI в VBScript, подключение - AskIt.RU;
How Can I Run a Script Under Alternate Credentials? - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs.


Время: 11:04.

Время: 11:04.
© OSzone.net 2001-