Скрипт shut_reboot.cmd может использоваться для перезагрузки или выключения компьютера по расписанию или вручную. Например, пользователи, подключенные к серверу по RDP не могут перезагрузить сервер, а иногда это нужно. Данный скрипт позволит перезагрузить сервер, не давая пользователю прав администратора. Правда, он содержит админский пароль в открытом виде, поэтому считаем, что наши пользователи не догадаются его подсмотреть.
Предположим, на компьютере имеется пользователь "Администратор" с очень сложным паролем "123". Эти значения указываются после ключей -u (имя пользователя) и -p (пароль).
Скрипт может перезагрузить или выключить компьютер, в зависимости от параметра, передаваемого при запуске.
Для перезагрузки используется вызов вида: shut_reboot.cmd reboot
Для выключения используется вызов вида: shut_reboot.cmd shutdown
@ECHO OFFREM Перезагрузка и выключение сервераSETLOCALIF "%1" == "" GOTO MISSING_PARAMETERSIF %1 == reboot GOTO REBOOTIF %1 == shutdown GOTO SHUTDOWNGOTO MISSING_PARAMETERS:REBOOTECHO Server reboot at %DATE% %TIME% >> %~dp0\reboot.log%~dp0\..\SysinternalsSuite\PsExec.exe -u Администратор -p 123 SHUTDOWN /R /F /T 10GOTO END:SHUTDOWNECHO Server reboot at %DATE% %TIME% >> %~dp0\reboot.log%~dp0\..\SysinternalsSuite\PsExec.exe -u Администратор -p 123 SHUTDOWN /S /F /T 10GOTO END:MISSING_PARAMETERSECHO Для корректной работы скрипту должен быть передан параметр!ECHO Значения: reboot - перезагрузка компьютера; shutdown - выключение компьютераECHO .PAUSEGOTO END:ENDВ скрипте используется утилита PsExec из пакета SysinternalsSuite. Скачать пакет можно на официальном сайте: https://technet.microsoft.com/ru-ru/sysinternals/bb842062
Структура каталогов, в которой всё это работает:
Поэтому для запуска PsExec и используется конструкция %~dp0\..\SysinternalsSuite\PsExec.exe
Использование конструкции %~dp0 позволяет не привязываться к расположению скрипта в каком-то определённом каталоге. Он может быть хоть в C:\programs\cmd, хоть в D:\program\cmd, хоть где-то ещё.
ВАЖНО! Для корректной работы скрипта текст должен быть в кодировке OEM866, иначе при запуске из командной строки интепретатор не поймёт русские символы. Для примера приложен файл shut_reboot.txt, если его переименовать в shut_reboot.cmd, то это будет практически готовый скрипт, только имя и пароль в него нужно вписать свои.