Войти

Показать полную графическую версию : Батник на выключение компьютеров по сети.


Страниц : [1] 2

Hrust2010
26-07-2010, 20:17
Доброго времени суток!

Я не силен в этих вещах, поэтому прошу помощи.

Подскажите как написать батник для принудительного выключения нескольких компьютеров в локальной сети (если это конечно возможно), при помощи команды shutdown /m \\10.x.x.x

Спасибо за помощь!

deepred
26-07-2010, 21:58
Hrust2010,

Выключить все станции в домене:

Echo on& Chcp1251 & CLS

Set "Domain=Mshome"

for /f %%a in ('"net view /domain:%Domain% | Find /i "\\""') ^
Do Shutdown /p /m %%a
pause

Выключить выборочно станции:

Echo on& Chcp1251 & CLS
Set machine1="pc1"
Set machine2="pc2"
...
Set machine4="pc4"

for /f "tokens=2 delims==" %%a in ('set machine') ^
Do Shutdown /p /m \\%%~a
pause

Используя WSH (*.vbs)

Dim OpSysSet, Flags
Dim IntErrlevel

arrTargetComps = Array("Comp1","Comp2","Comp3")

For Each strTargetComp In arrTargetComps

Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate,(RemoteShutdown)}//" & strTargetComp ).ExecQuery("select * from Win32_OperatingSystem where Primary=true")


' 0-Logoff, 1-Shutdown, 2-Reboot, 4-Force
' 8-Power Off, 16-Force If Hung

Flags = 1 ' Выключаем
IntErrlevel = 0

For Each OpSys In OpSysSet
OpSys.Win32Shutdown Flags,IntErrlevel
Next

Next


Пара примеров для vbs:
http://gallery.technet.microsoft.com/ScriptCenter/ru-ru/3c937415-5ad6-468e-9a71-eace6ff99bcd
http://gallery.technet.microsoft.com/ScriptCenter/ru-ru/ad9cf30f-5f9a-406c-bba1-7c30388c1adb

Hrust2010
27-07-2010, 10:53
Попробовал второй скрипт. Работает. Только есть один ньюанс.
Когда компьютер из списка станций уже рание выключен, батник на нем останавливается и долго обрабатывает. Можно ли избежать этого?

Спасибо!

deepred
27-07-2010, 13:52
Hrust2010,

Вариант для расположения все станций в одном домене:
Echo off & Chcp 866 & CLS
Set machine1="pc1"
Set machine2="pc2"
::...
Set machine4="pc4"
Set machine5="HPPAVILION-PC"

Set "Dmn=Mshome"

for /f "tokens=2 delims==" %%a in ('set machine') ^
Do for /f %%b in ('"net view /domain:%Dmn% | Find /i "\\""') ^
Do if "\\%%~a"=="%%~b" (Shutdown /m \\%%~a)

pause

Если PC расположены в разных доменах, то в команде Net View следует
применить ключ /Network

Hrust2010
28-07-2010, 11:24
Что - то не так.

Домен я свой указал. после запуска выводит сообщение
machine "pc1" powered off
machine "pc1" powered off
machine "pc1" powered off
machine "pc1" powered off
........................................
machine "pc2" powered off
machine "pc2" powered off
machine "pc2" powered off
.................................

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

Rintok
04-08-2010, 14:07
А чем тебе не нравится команда "shutdown"?


shutdown -s -f -m \\"Имя 1-ого компа, можно IP" -t 03
shutdown -s -f -m \\"Имя 2-ого компа" -t 03
shutdown -s -f -m \\"Имя 3-ого компа" -t 03

base
25-01-2011, 14:51
как можно удаленно перевести компьютеры в спящий режим?

Petya V4sechkin
25-01-2011, 15:29
как можно удаленно перевести компьютеры в спящий режим?
С помощью PsShutdown (http://technet.microsoft.com/en-us/sysinternals/bb897541)
psshutdown.exe \\имя_или_IP-адрес -d -t 0
или
psshutdown.exe \\имя_или_IP-адрес -h -t 0

base
26-01-2011, 04:47
дело в том что этой командой необходимо гасить 4 компьютера при отключении электричества. программа гасит компьютеры по очереди.
когда один из компьютеров уже выключен, то программа пытается к нему подключится 1 минуту, при этом другие компьютеры не выключаются. в этом случает теряется слишком много времени.
как написать батник так чтобы команды на выключения выдавались всем компьютерам одновременно?

Petya V4sechkin
26-01-2011, 10:29
программа пытается к нему подключится 1 минуту
Инструкцию почитайте, опция -n время_в_секундах

-n Specifies timeout in seconds connecting to remote computers.

base
27-01-2011, 04:27
Petya V4sechkin, я не против того чтоб минуту таймаут был) я хотел бы, чтоб задание на выключение подавалось всем компьютерам одновременно

base
27-01-2011, 07:01
Hrust2010,
открываете блокнот, туда вставляете:
shutdown -s -f -m \\10.0.0.1 -t 03
shutdown -s -f -m \\10.0.0.2 -t 03
shutdown -s -f -m \\10.0.0.3 -t 03
...
shutdown -s -f -m \\10.0.0.n -t 03

с указанием нужных IP и сохраняете как komanda.cmd

base
27-01-2011, 08:34
одновременный переход в спящий режим 4х компьютеров я сделал следующим образом:
основной файл:
start hibernate-1.bat
start hibernate-2.bat
start hibernate-3.bat
start hibernate-4.bat
и 4 файла с командой:
"C:\Program Files\PsShutdown\psshutdown.exe" \\192.168.1.X -h -t 0

Только в этом случае отработанные файлы hibernate-X.bat не закрывают окно командной строки. как это исправить?

amel27
27-01-2011, 09:35
start "" "C:\Program Files\PsShutdown\psshutdown.exe" -s -f -m \\10.0.0.1 -t 03
start "" "C:\Program Files\PsShutdown\psshutdown.exe" -s -f -m \\10.0.0.2 -t 03
start "" "C:\Program Files\PsShutdown\psshutdown.exe" -s -f -m \\10.0.0.3 -t 03
...
start "" "C:\Program Files\PsShutdown\psshutdown.exe" -s -f -m \\10.0.0.n -t 03

Muslitel
01-12-2011, 20:47
Осмелюсь продолжить данную тему.
Решил использовать следующий скрипт
shutdown -f -t 120 -s -m \\PC1
shutdown -f -t 120 -s -m \\PC2
Работает хорошо, но с багами, о которых прочитал здесь. Если компьютер уже был выключен, то скрипт зависает и можно идти гулять.
Почитал по поводу psshutdown.exe. Заинтересовался. Назрел вопрос.

Мне необходимо выключать избранные ПК в определенное время. К примеру компьютеры с именами PC1, PC2 и PC3. Выключить их надо в 18.30. При этом желательно, чтоб:
1. скрипт срабатывал в 18.00;
2. на рабочем столе пользователя появлялось уведомление о том, что ПК будет выключен через 30 минут;
3. время ожидания подключения к компьютеру было не более 10 секунд.
Если я правильно понимаю, то следует разместить psshutdown.exe на сервере. Например, в папке C:\Program Files\PsShutdown\. Сам скрипт тоже поместить на сервер и будет выглядеть он следующим образом:
start "Shutdown" "C:\Program Files\PsShutdown\psshutdown.exe" \\PC1 -s -f -t 1800 -n 10 -m "Компьютер будет выключен через 30 минут"
start "Shutdown" "C:\Program Files\PsShutdown\psshutdown.exe" \\PC2 -s -f -t 1800 -n 10 -m "Компьютер будет выключен через 30 минут"
start "Shutdown" "C:\Program Files\PsShutdown\psshutdown.exe" \\PC3 -s -f -t 1800 -n 10 -m "Компьютер будет выключен через 30 минут"
После этого, в планировщике задач просто оформить задачу запуска обработки данного скрипта и наслаждаться.

Или я чет путаю?

Iska
02-12-2011, 03:05
Зачем «-s»?

-m "Компьютер будет выключен через 30 минут"
Понадобится научить пользователей не пугаться сообщения и сдвигать его в сторону, дабы продолжить работу. Больно долгое время ожидания, успеют забыть. А потом будет — «Ах, я не успел сохранить!».

Я бы сделал несколько иначе: запускал скрипт (с отправкой уведомления посредством «msg.exe») из Планировщика в 18:00, 18:10, 18:20. А скрипт на выключение — за минут пять до часа «X». Пяти минут должно быть вполне достаточно, чтобы сохранить все изменения и даже выключить машину самостоятельно.

Muslitel
02-12-2011, 13:21
Можно и так, но на предприятии планируется поделить компы на три группы. первая группа - это ПК, которые будут принудительно выключаться в 18.30 (пользователи этих ПК по графику работают до 18.00). Вторая группа - ПК выключается в 21.00 (пользователи этой группы ПК работают по графику да 20.00). Третья группа - ПК, которые не отключаются.
Посему, думаю, что выскочившее окно будет напрягать не часто :).
Хотя... Все же Вы правы. Для часа Х в 18.30 лучше сделать уведомление в 18.00 через msg. А в 18.25 уже выполнить скрипт с ключом -m и сообщением.
Я, правда, не совсем понимаю, почему все же, написанный мною скрипт, не работает :(. Полночи убил, а как-то не хочет. Нет сообщения и ПК не выключается :( Пробовал пока локально все сделать на домашнем.

Iska
02-12-2011, 16:09
Я, правда, не совсем понимаю, почему все же, написанный мною скрипт, не работает . Полночи убил, а как-то не хочет. Нет сообщения и ПК не выключается Пробовал пока локально все сделать на домашнем. »
Этот?
start "Shutdown" "C:\Program Files\PsShutdown\psshutdown.exe" \\PC1 -s -f -t 1800 -n 10 -m "Компьютер будет выключен через 30 минут"
start "Shutdown" "C:\Program Files\PsShutdown\psshutdown.exe" \\PC2 -s -f -t 1800 -n 10 -m "Компьютер будет выключен через 30 минут"
start "Shutdown" "C:\Program Files\PsShutdown\psshutdown.exe" \\PC3 -s -f -t 1800 -n 10 -m "Компьютер будет выключен через 30 минут"

Muslitel
02-12-2011, 16:30
ага. он самый.
когда тестил его на работе - он исправно считал 10 секунд, когда натыкался на предварительно выключенный ПК и все. это единственный результат, которого мне удалось добиться :(

Iska
03-12-2011, 03:47
Если убрать имя машины:
start "Shutdown" "C:\Program Files\PsShutdown\psshutdown.exe" \\PC1 -s -f -t 1800 -n 10 -m "Компьютер будет выключен через 30 минут"
для локальной машины код работает?

Точно ли указан путь:
"C:\Program Files\PsShutdown\psshutdown.exe"
Вы разворачивали не весь пакет «PsTools»?
C:\Program Files\PsTools\psshutdown.exe




© OSzone.net 2001-2012