Войти

Показать полную графическую версию : Убийство процессов по требованию для всех компьютеров в AD


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

McLotos
12-08-2011, 13:13
Попробуйте вот это (http://www.winblog.ru/quicktip/1147767449-29041101.html)

mcfred
12-08-2011, 14:25
Попробуйте вот это »
это на один компьютер, в принципе для этого pskill пользуюсь. а нужно все компы в домене

McLotos
12-08-2011, 14:27
А что вам мешает указать в параметре команды адреса нескольких машин?

mcfred
12-08-2011, 15:31
А что вам мешает указать в параметре команды адреса нескольких машин? »
а если их 200? я б не против. я тут пишу, потому что незнаю как это сделать. приведите пример, если не сложно

Busla
12-08-2011, 16:03
Скриптами так не выйдет, по хорошему надо писать сервис, который ждёт широковещательный сигнал.

mcfred
12-08-2011, 16:21
таки получается в природе не существует ничего подобного?

Iska
12-08-2011, 17:13
Скриптами так не выйдет, »
Почему не выйдет? Последовательный запуск из «/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
Iska, у меня есть сомнения, что оно корректно и быстро обработает несколько сотен компьютеров

Iska
13-08-2011, 12:33
Busla, какие именно сомнения? Пожалуйста, отдельно сомнения по поводу «корректно», и отдельно — по поводу «быстро».

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

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

Это был только пример на тему, что «так тоже можно». Лучше, конечно, использовать WSH/PoSH. Здесь ведь мы не делаем многого из в общем-то обычного перечня действий:
* не рассмотрено как и откуда мы формируем список машин;
* не учитывается длина списка и не организуется очередь опроса;
* не проверяем, скажем, существование и доступность машин из переданного списка;
* не заботимся о получении результатов исполнения.
Хотя в данном конкретном случае последние два пункта не влияют на конечный результат, но обычно всё это нужно учитывать. Общий пример с использованием квазипараллельной обработки запросов WMI под WSH приведён здесь: VBScript: асинхронная обработка множественных запросов WMI (http://forum.script-coding.com/viewtopic.php?id=3783), ноги растут отсюда: VBScript / WMI : Асинхронный мультипинг (http://forum.script-coding.com/viewtopic.php?id=3739) (в частности, ответ на частный вопрос по количеству запросов WMI (http://forum.script-coding.com/viewtopic.php?pid=29647#p29647)).

P.S. Было ещё: VBS/WMI: Многопоточный WshController с ограничением длины очереди (http://forum.script-coding.com/viewtopic.php?id=5682) и VBScript / WSHController: Попытка асинхронного запуска (http://forum.script-coding.com/viewtopic.php?id=3963), но детально я с этим не разбирался, потому просто привожу здесь ссылки для целостности картины.

Foreigner
13-08-2011, 15:23
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
Foreigner, в этом случае обход списка машин происходит последовательно: выполняется запрос/метод для первой машины, ожидает его завершения, второй машины и т.д. Плюс, на каждую выключенную машину из списка по умолчанию уходит до 5 секунд времени ожидания: Script That Runs a WMIC Command Runs Slowly, and You Cannot Specify a Custom Timeout Value for the WMIC /FAILFAST Switch (http://support.microsoft.com/kb/824223).

mcfred
23-08-2011, 13:01
Iska, у меня как раз сомнения на счёт "вместе" - в понедельник непременно проэкспериментирую, но сотня-другая параллельно запущенных wmic'ов меня несколько смущает :-) »
Можете поделиться результатами?

Iska
23-08-2011, 14:30
mcfred, попробуйте «постучать» коллеге Busla в личку (http://forum.oszone.net/private.php?do=newpm&userid=69457). Может он просто запамятовал.

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

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




© OSzone.net 2001-2012