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

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

mcfred 12-08-2011 11:48 1730406

Убийство процессов по требованию для всех компьютеров в AD
 
Добрый день. Меня интересут следующее: Необходим скрипт на от убийство процессов "pr1" и "pr2" не на одном компьютере, а на всех сразу (AD). Нагуглил много способов, но все касательно 1 компьютера. Есть ПО, типа Remote Task Manager, но опять же управление только одним ПК. Если есть решения, прошу помощи. Последнее что предлагали, это запуск скриптов через nnCron, но с ним проблемы (нет msi и поддержки Win Vista, 7). И еще: это надо сделать одновременно, т.е не по очереди все компьютеры, а все сразу

McLotos 12-08-2011 13:13 1730485

Попробуйте вот это

mcfred 12-08-2011 14:25 1730552

Цитата:

Цитата McLotos
Попробуйте вот это »

это на один компьютер, в принципе для этого pskill пользуюсь. а нужно все компы в домене

McLotos 12-08-2011 14:27 1730553

А что вам мешает указать в параметре команды адреса нескольких машин?

mcfred 12-08-2011 15:31 1730623

Цитата:

Цитата McLotos
А что вам мешает указать в параметре команды адреса нескольких машин? »

а если их 200? я б не против. я тут пишу, потому что незнаю как это сделать. приведите пример, если не сложно

Busla 12-08-2011 16:03 1730647

Скриптами так не выйдет, по хорошему надо писать сервис, который ждёт широковещательный сигнал.

mcfred 12-08-2011 16:21 1730655

таки получается в природе не существует ничего подобного?

Iska 12-08-2011 17:13 1730680

Цитата:

Цитата Busla
Скриптами так не выйдет, »

Почему не выйдет? Последовательный запуск из «/node:@nodelist» можно обойти при помощи «start». Тот же taskkill или wmic.exe:
Код:

@echo off

for /f %%i in (NodeList.txt) do (
        start wmic.exe /node:"%%i" Process where "name='pr1' or name='pr2'" call terminate
)

Разве нет?!

Busla 13-08-2011 00:02 1730867

Iska, у меня есть сомнения, что оно корректно и быстро обработает несколько сотен компьютеров

Iska 13-08-2011 12:33 1730983

Busla, какие именно сомнения? Пожалуйста, отдельно сомнения по поводу «корректно», и отдельно — по поводу «быстро».

Busla 13-08-2011 13:23 1731008

Iska, у меня как раз сомнения на счёт "вместе" - в понедельник непременно проэкспериментирую, но сотня-другая параллельно запущенных wmic'ов меня несколько смущает :-)

Iska 13-08-2011 15:07 1731057

Busla, с этим вполне с Вами согласен: запуск приложения — накладная в плане времени штука (особенно при наличии антивируса и/или вместе с каким-нибудь Internet Security в комплекте).

читать дальше »
Это был только пример на тему, что «так тоже можно». Лучше, конечно, использовать WSH/PoSH. Здесь ведь мы не делаем многого из в общем-то обычного перечня действий:
* не рассмотрено как и откуда мы формируем список машин;
* не учитывается длина списка и не организуется очередь опроса;
* не проверяем, скажем, существование и доступность машин из переданного списка;
* не заботимся о получении результатов исполнения.
Хотя в данном конкретном случае последние два пункта не влияют на конечный результат, но обычно всё это нужно учитывать. Общий пример с использованием квазипараллельной обработки запросов WMI под WSH приведён здесь: vbscript: асинхронная обработка множественных запросов WMI, ноги растут отсюда: VBScript / WMI : Асинхронный мультипинг (в частности, ответ на частный вопрос по количеству запросов WMI).

P.S. Было ещё: VBS/WMI: Многопоточный WshController с ограничением длины очереди и VBScript / WSHController: Попытка асинхронного запуска, но детально я с этим не разбирался, потому просто привожу здесь ссылки для целостности картины.

Foreigner 13-08-2011 15:23 1731063

Busla,
Цитата:

Цитата Busla
но сотня-другая параллельно запущенных wmic'ов меня несколько смущает »

Это если в цикле запускать, а так он вроде сам умеет из файла "ноды" считывать:
Код:

wmic /?:full
Цитата:

NODE - Specify which servers the alias will operate against.
USAGE:

/NODE:<machine id list>
NOTE: <machine id list> ::= <@filename | machine id> | <@filename | machine id> <,machine id list>
Правда сам попробовать не могу

Iska 13-08-2011 15:34 1731070

Foreigner, в этом случае обход списка машин происходит последовательно: выполняется запрос/метод для первой машины, ожидает его завершения, второй машины и т.д. Плюс, на каждую выключенную машину из списка по умолчанию уходит до 5 секунд времени ожидания: Script That Runs a WMIC Command Runs Slowly, and You Cannot Specify a Custom Timeout Value for the WMIC /FAILFAST Switch.

mcfred 23-08-2011 13:01 1737705

Цитата:

Цитата Busla
Iska, у меня как раз сомнения на счёт "вместе" - в понедельник непременно проэкспериментирую, но сотня-другая параллельно запущенных wmic'ов меня несколько смущает :-) »

Можете поделиться результатами?

Iska 23-08-2011 14:30 1737746

mcfred, попробуйте «постучать» коллеге Busla в личку. Может он просто запамятовал.

Busla 24-08-2011 10:44 1738289

Да, немножко запамятовал - сотня компьютеров корректно обрабатывается менее, чем за минуту (при параллельном запуске в for). Но, конечно, логировать это традиционным перенаправлением вывода в файл не получается.

mcfred 25-08-2011 14:25 1739149

А как поставить условие? Скажем, я хочу чтобы этот скрипт выполнялся каждые 5 мин, при условии, что на \\srv\dir\ есть файл 555.start?


Время: 20:51.

Время: 20:51.
© OSzone.net 2001-