Показать полную графическую версию : Батник на выключение компьютеров по сети.
Hrust2010
26-07-2010, 20:17
Доброго времени суток!
Я не силен в этих вещах, поэтому прошу помощи.
Подскажите как написать батник для принудительного выключения нескольких компьютеров в локальной сети (если это конечно возможно), при помощи команды shutdown /m \\10.x.x.x
Спасибо за помощь!
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
Попробовал второй скрипт. Работает. Только есть один ньюанс.
Когда компьютер из списка станций уже рание выключен, батник на нем останавливается и долго обрабатывает. Можно ли избежать этого?
Спасибо!
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
.................................
Хотя кокраз эти машины были включены.
И после отработки батника машины продолжают работать
А чем тебе не нравится команда "shutdown"?
shutdown -s -f -m \\"Имя 1-ого компа, можно IP" -t 03
shutdown -s -f -m \\"Имя 2-ого компа" -t 03
shutdown -s -f -m \\"Имя 3-ого компа" -t 03
как можно удаленно перевести компьютеры в спящий режим?
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
дело в том что этой командой необходимо гасить 4 компьютера при отключении электричества. программа гасит компьютеры по очереди.
когда один из компьютеров уже выключен, то программа пытается к нему подключится 1 минуту, при этом другие компьютеры не выключаются. в этом случает теряется слишком много времени.
как написать батник так чтобы команды на выключения выдавались всем компьютерам одновременно?
Petya V4sechkin
26-01-2011, 10:29
программа пытается к нему подключится 1 минуту
Инструкцию почитайте, опция -n время_в_секундах
-n Specifies timeout in seconds connecting to remote computers.
Petya V4sechkin, я не против того чтоб минуту таймаут был) я хотел бы, чтоб задание на выключение подавалось всем компьютерам одновременно
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
одновременный переход в спящий режим 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 не закрывают окно командной строки. как это исправить?
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 минут"
После этого, в планировщике задач просто оформить задачу запуска обработки данного скрипта и наслаждаться.
Или я чет путаю?
Зачем «-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 и сообщением.
Я, правда, не совсем понимаю, почему все же, написанный мною скрипт, не работает :(. Полночи убил, а как-то не хочет. Нет сообщения и ПК не выключается :( Пробовал пока локально все сделать на домашнем.
Я, правда, не совсем понимаю, почему все же, написанный мною скрипт, не работает . Полночи убил, а как-то не хочет. Нет сообщения и ПК не выключается Пробовал пока локально все сделать на домашнем. »
Этот?
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 секунд, когда натыкался на предварительно выключенный ПК и все. это единственный результат, которого мне удалось добиться :(
Если убрать имя машины:
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.