Psshutdown перезагрузка удаленного компьютера

Обновлено: 04.07.2024

Этичный хакинг и тестирование на проникновение, информационная безопасность

Операционная система Windows предоставляет различные способы управления удалёнными системами. Telnet, RDP, VNC — это только некоторые из них. Но эти варианты обычно связаны с графическим интерфейсом пользователя. Если мы предпочитаем интерфейс командной строки, есть альтернатива под названием PsExec.

PsExec — это портативный инструмент от Microsoft, который позволяет удалённо запускать процессы с использованием учётных данных любого пользователя. Это немного похоже на программу удалённого доступа, но вместо того, чтобы управлять удаленным компьютером с помощью мыши, команды отправляются на компьютер через командную строку.

Примечание: некоторые антивирусные сканеры сообщают, что один или несколько инструментов заражены вирусом «remote admin» («удалённый администратор»). Ни один файл из пакета PsTools не содержит вирусов, но они использовались вирусами, поэтому они вызывают уведомления о нежелательном ПО.

Вы можете использовать PsExec не только для управления процессами на удалённом компьютере, но и для перенаправления вывода консоли приложения на локальный компьютер, создавая впечатление, будто процесс выполняется локально.

Что такое PsExec и PsTools

На самом деле, PsExec это всего лишь один из инструментов из пакета PsTools. Программа PsExec используется чаще всего, поэтому обычно упоминается она, но в данной инструкции будут рассмотрены как примеры использования PsExec, так и примеры использования других инструментов из пакета PsTools.

Поскольку все утилиты имеют интерфейс командной строки, то если вы совсем не ориентируетесь в командной строке Windows (например, даже не знаете, как её открыть), то вначале ознакомьтесь со статьёй «Настройка рабочего окружения PowerShell в Windows и Linux».

Распакуйте скаченный архив, например, в папку PSTools.

Программа PsExec не требует установки. Но для запуска исполнимых файлов в командной строке нужно указать путь до них в файловой системе. Это можно сделать двумя способами:

1. Перед запуском программ перейти в папку со скаченными исполнимыми файлами, например, у меня это папка C:\Users\MiAl\Downloads\PSTools\, тогда, используя команду cd, в папку с файлами я перехожу следующим образом:

2. Скопировать папку PSTools в директорию C:\Windows\System32\ тогда все файлы PSTools будут доступны следующим образом:

Выберите любой вариант, который вам удобнее.

Что нужно для PsExec

Для работы PsExec на удалённом компьютере не требуется никакого программного обеспечения — то есть на компьютере, которым вы будете управлять, не нужно устанавливать никакую клиентскую часть. Но нужно соблюдение некоторых условий, чтобы PsExec работала, поэтому если первая попытка не удалась, то проверьте следующие требования.

1. На обеих машинах, т.е. удалённом компьютере (которым будем управлять) и локальном компьютере (с которого будем управлять), должен быть включён общий доступ к файлам и принтерам. Для их включения смотрите статью «SMB: настройка общей сетевой папки в Windows».

2. В современных Windows 10 у меня PsExec работала только с учётной записью «Администратор», видимой по той причине, что необходимы административные общие ресурсы (подробнее о них смотрите в статье «Как включить административные общие ресурсы в ОС Windows 10, 8 или 7 (C$, D$, $admin и другие)»).

На серверах Windows учётная запись «Администратор» включена по умолчанию.

В более старых версиях Windows, видимо, достаточно включения общего сетевого ресурса $admin для предоставления доступа к папке \Windows\. В Windows 10 папки $admin как сетевого ресурса нет вовсе.

3. Проверьте, что сетевой доступ к файлам и принтерам включён в файерволе. Для этого нажмите Win+r, введите там firewall.cpl.


Во вкладке «Разрешение взаимодействия с приложениями или компонентами в брандауэре защитника Windows»


найдите «Общий доступ к файлам и принтерам» и убедитесь, что стоит галочка в столбце «Частная» - если его там нет, то нажмите кнопку «Изменить параметры», поставьте галочку и нажмите ОК.


4. Убедитесь, что оба компьютера принадлежат к одной и той же рабочей группе (Workgroup).

5. Убедитесь, что вы правильно вводите пароль администратора удалённого компьютера.

Как включить учётную запись администратора

В моих тестах на последних Windows 10 и Windows Server 2019 команда PsExec работает только с учётной записью Администратор. Поэтому в этом разделе описано, как активировать пользователя Администратор, который по умолчанию присутствует в Windows, но в обычных, не серверных версиях, этот пользователь отключён.

Пользователя Администратор должен быть активен только на удалённом компьютере, где будут выполняться команды с помощью PsExec. На локальном компьютере учётная запись Администратор не требуется.

1. Нажмите клавиши Win+r, чтобы открыть окно запуска команды.

2. Введите lusrmgr.msc и нажмите Enter.

3. Откройте Пользователи.

4. Щёлкните правой кнопкой мыши Администратор и выберите Свойства.


5. Снимите флажок «Отключить учётную запись» и нажмите ОК.


6. Снова щёлкните правой кнопкой мыши учётную запись администратора и выберите «Задать пароль».


7. Укажите пароль для учётной записи администратора и нажмите «ОК».

Как запустить команду на удалённой системе

Основное использование команды PsExec — это просто запуск команды в удалённой системе. Чтобы запустить команду в удалённой системе, мы должны указать имя пользователя и пароль вместе с командой для запуска на удалённом компьютере.

Общий вид команды для запуска на удалённой системе:

  • \\КОМПЬЮТЕР — имя компьютера Windows или его IP адрес в локальной сети
  • -u Администратор — если операционная система на ином языке, то имя пользователя также будет другим, например, на английском это Administrator
  • -p ПАРОЛЬ — пароль пользователя Администратор. Эту опцию можно пропустить, тогда команда запросит пароль для ввода
  • КОМАНДА — программа, которую нужно выполнить на удалённой системе. После команды могут идти её опции.

Пример выполнения команды ipconfig на удалённом компьютере \\hackware-server от имени пользователя Администратор с паролем Aa1:

Как мы видим, команда выполняется в удалённой системе без проблем.


У удалённого компьютера HACKWARE-SERVER IP адресом является 192.168.0.53, поэтому следующая команда эквивалентна предыдущей:

Обратите внимание, что в Windows (в противоположность Linux), регистр букв в именах компьютеров, командах и путях не имеет значения — можно использовать буквы любого регистра в любых местах.

Как в PsExec запустить команду с аргументами

Аргументы программы достаточно указать через пробел после самой команды:

После запуска команды в удалённой системе вывод команды будет напечатан в текущий стандартный вывод, который является нашей текущей оболочкой (окном командной строки). Этот вывод может быть перенаправлен в файл с помощью символа >. Если у нас много удалённых систем для запуска команд, эта опция будет очень полезна.

В этом примере выходные данные команды ipconfig сохраняются в файл с именем HACKWARE-SERVER_ifconfig.

Для вывода содержимого файла можно использовать команду Get-Content или её более короткий псевдоним cat:


Pass The Hash (использование хеша вместо пароля)

Указывать в командной строке пароль плохо для безопасности. А использование интерактивного ввода не позволяет использовать psexec.exe в скриптах. Выход из этой ситуации — использовать хеш пароля.

PsExec не может напрямую использовать хеш (хотя это ошибочно утверждается в некоторых инструкциях). Для применения хеша (Pass The Hash) с PsExec нужно использовать Windows Credential Editor или Mimikatz или Metasploit.

Пример выполнения Pass The Hash с PsExec. Вначале в Mimikatz:

Затем PsExec запускается без указания имени пользователя и пароля

Примеры NTLM хешей и где их брать в статье «Как взломать пароль Windows».

Как копировать исполнимый файл с локального на удалённую систему

Выполнение команд в удалённой системе — очень полезная функция, но есть и другая полезная функция, которая облегчит работу системных администраторов и пентестеров. PsExec может использоваться для копирования исполнимых файлов из локальной системы в удалённую систему. Мы задействуем опцию -c для операции копирования. По завершении команд скопированный экземпляр будет удалён.

В этом примере мы скопируем cmd.exe. После завершения операции копирования в удалённой системе будет запущен cmd.exe.

Как мы видим, мы получаем оболочку cmd в удалённой системе.

С опцией -c можно указать любой файл.

Ещё один пример:

В последнем примере как использовать PsExec мы используем опцию -c для копирования программы ccleaner.exe на удалённый компьютер J3BCD011, а затем запускаем выгруженный файл с параметром /S, который говорит CCleaner включить тихую установку (не требует ввода пользователя). Добавление такого аргумента требует cmd.

Как запустить приложение с графическим интерфейсом на удалённой системе

Операционные системы Windows предоставляют по умолчанию графический интерфейс. PsExec можно использовать для открытия приложения с графическим интерфейсом на удалённой системе в указанной пользовательской консоли. Пользовательская консоль просто означает рабочий стол пользователя.

В этом примере мы запустим notepad.exe на удаленной системе. Пользователь удаленного системного администратора может взаимодействовать с этим блокнотом. То есть программа откроется на удалённой системе, как-либо взаимодействовать с ней на локальной системе не получится.

Поскольку используется опция -i, программа откроется в интерактивном режиме, что означает, что она фактически запустится на экране удалённого компьютера. Если бы -i была опущена в вышеупомянутой команде, то команда выполнялась бы в скрытом режиме, что означает не показывать какие-либо диалоговые окна или другие окна.

Мы получим нашу локальную оболочку после того, как удалённый пользователь закроет блокнот. После закрытия код выхода будет напечатан в консоли psexec.

Как запустить команду как пользователь SYSTEM

При выполнении команд в удалённой системе привилегии и владелец процесса будут предоставлены пользователем. Если нам нужно изменить владельца удалённых команд на пользователя SYSTEM, мы указываем опцию -s.

В этом примере мы будем использовать regedit.exe:

Обратите внимание, что если на локальном компьютере нужно запустить программу с привилегиями SYSTEM (это намного более высокий привилегии, чем Администратор), то psexec также поможет. Например, чтобы получить доступ к разделам реестра Windows HKEY_LOCAL_MACHINE\SAM\SAM\ достаточно выполнить команду:

Как создать интерактивную оболочку с подключением к удалённой системе

До сих пор мы выполняли команды удалённо. После выполнения команды подключение к удалённой системе закрывалось. Это как сессионное соединение. С помощью PsExec мы можем получить удалённую оболочку или командную строку (по аналогии SSH в Linux). PsExec подключается удалённо и предоставляет нам оболочку MS-DOS. Чтобы получить удалённую оболочку, мы указываем команду cmd.exe в удалённой системе.

Но начнём с того, что посмотрим информацию о текущей системе и пользователе:

Теперь создадим шелл до другого компьютера:

Во-первых, обратите внимание, что изменилось приглашение командной строки (вместо PowerShell она стало CMD).

Теперь просмотрим информацию о текущем пользователе и системе:


Как можно убедиться, мы теперь находимся в командной строке другого компьютера — это и есть шелл, интерактивная оболочка.

Локальным пользователем является hackware-mial\mial, а после подключения пользователь стал hackware-server\администратор. Локальная система имеет версию 10.0.18363.720, а удалённая — версию 10.0.17763.1039.

Инструменты PsTools

До сих пор мы рассмотрели возможности утилиты PsExec, которая является самой популярной в пакете PsTools. Но в PsTools ещё много утилит для типичных действий, которые регулярно выполняют системные администраторы. Рассмотрим их далее.

Как вывести список открытых удалённо файлов с помощью PsFile

Команду PsFile можно использовать для просмотра или закрытия открытых файлов. Синтаксис очень похож на команду PSexec. В этом примере мы перечислим все открытые удалённо файлы.


Как получить список SID на удалённой системе с PsGetSid

SID используется для более детальной идентификации пользователей Windows. Мы можем перечислить SID предоставленных пользователей с помощью команды PsGetSid, как показано ниже.


Как получить информацию об удалённой системе с PSInfo

PsInfo — это инструмент, используемый для получения об удалённой системе информации, такой как время работы, версия, вариант Windows и т. д.


Следующая информация об удалённой системе предоставлена в PsInfo:

  • Uptime показывает, сколько дней и часов работает система
  • Kernel Version показывает ядро операционной системы
  • Product Type показывает версию операционной системы
  • Product Version версия продукта
  • Kernel Build Number номер сборки ядра
  • Registered Organization организация
  • Registered Owner владелец
  • IE Version показывает версию Internet Explorer
  • System Root показывает, где установлена операционная система
  • Processor показывает количество процессоров или потоков
  • Processor Speed скорость (частота) центрального процессора
  • Processor Type показывает подробную версию и имя процессора
  • Physical Memory количество физической памяти
  • Video Driver показывает имя загруженного драйвера

Как получить процессов в удалённой системе с PsList

Процессы, запущенные в удалённой системе, могут быть легко перечислены с помощью команды PsList.


Вывод предоставит следующую информацию о процессах удалённой системы.

  • Name — это имя исполняемого файла
  • Pid — это ID процесса, который идентифицирует процессы (то есть отделяет друг от друга, является уникальной характеристикой процессов)
  • Pri является приоритетом, который влияет на производительность процесса в периоды высокой нагрузки
  • Thd — это номер потока
  • Hnd — это счётчик открытых файловых обработчиков
  • CPU Time — это общее использование ресурсов центрального процессора
  • Elapsed Time — это время от начала процесса

Как убить процесс в удалённой системе с PsKill

Процессы, запущенные в удалённой системе, могут быть легко остановлены с помощью команды PsKill. Чтобы убить процесс, мы должны указать идентификатор процесса или имя процесса в качестве аргумента. Мы убьём удалённый процесс с идентификатором процесса 2064.

Как получить список журналов событий на удалённой системе с помощью PsLogList

Журналы удалённой системы могут быть легко выгружены в локальную систему с помощью команды PsLogList. Если мы используем эту команду без каких-либо дополнительных параметров, она выведет все журналы событий из удалённой системы, которые заполнят окно консоли. Так что для примера мы с опцией -m ограничим вывод последними 5 минутами журналов событий.


Как изменить пароль на удалённой системе с помощью PsPasswd

Пароли пользователей удалённой системы можно легко изменить с помощью команды PsPasswd. В этом примере мы изменим пароль администратора на 123456Aa.

Пинг с PsPing

Ещё одним полезным инструментом является PsPing, который создает ICMP-пакеты для проверки связи. Команда в примере запускается на локальной системе (но может быть запущена и удалённо).


Для запуска пинга с удалённого компьютера:

Управление службами в удалённой системе с помощью PsService

Команда PsService используется для просмотра, запуска, остановки служб в удалённой системе.

Как вывести список служб

Мы можем перечислить удалённые сервисы с опцией query.


Как запустить службу удалённо

Удалённый сервис может быть запущен с опцией start. В этом примере мы запустим сервис с именем mysql.


После запуска сервиса будет выведена информация о нём.

Как остановить службу удалённо

В следующем примере мы остановим службу mysql:


Как выключить, перезагрузить, приостановить удалённую систему с PsShutdown

Удалённую систему можно отключить командой PsShutdown, как показано ниже.

Админу на заметку - 17. Как выключить или перезагрузить компьютер через RDP

Удаленный доступ к рабочему столу по протоколу RDP широко используется для работы не только с серверами, но и с рабочими станциями, как для удаленной работы, так и в целях администрирования. Однако есть некоторые ограничения, в частности в среде клиентской ОС нельзя управлять параметрами питания, даже имея права локального администратора. В некоторых случаях это способно взывать затруднения, поэтому если вы до сих пор не знаете, как выключить или перезагрузить клиентскую версию ОС через RDP - эта статья для вас.

В серверных системах семейства Windows локальный администратор, не говоря о доменном, имеет полный контроль над системой и не испытывает затруднений в управлении питанием даже подключившись через удаленный доступ.

rdp-shutdown-001.jpg

В клиентских ОС ситуация принципиально иная, даже локальный администратор не имеет возможности выключить или перезагрузить компьютер.

rdp-shutdown-002.jpg

Несмотря на кажущуюся нелогичность, определенный смысл в таком поведении есть. Серверные ОС администрируют профессионалы (как минимум в теории), которые должны отдавать себе отчет о возможных последствиях своих действий. С другой стороны, удаленно выключив ПК так просто включить его уже не получится, в большинстве случаев потребуется физическое присутствие, поэтому решение убрать подобную функцию от простых пользователей выглядит вполне обоснованно. Администраторы, следуя этой логике, должны уметь управлять питанием и иными способами.

Но как показывает практика, умеют это не все. Ничего страшного в этом нет, как говорил мой школьный учитель: спросить - стыд минуты, не знать - стыд всей жизни.

Графическая оболочка

На самом деле "проблема" решается не просто, а очень просто. Выйдя на рабочий стол достаточно нажать Alt+F4 чтобы получить стандартный диалог завершения работы.

rdp-shutdown-003.jpg

Однако у этого способа есть один существенный недостаток. Очень часто выключить или перезагрузить компьютер мешают некоторые приложения, например, несохраненный документ. Подобная картина, на наш взгляд, знакома каждому.

rdp-shutdown-004.jpg

Беда в том, что этого экрана через RDP вы уже не увидите. Да и открытые приложения - это полбеды, хуже, когда систему не дает выключить или перезагрузить зависшее приложение. В этом случае придется искать иные методы.

Командная строка

Как обычно, если графические инструменты не помогают, на помощь администратору приходит командная строка. Для того, чтобы управлять питанием компьютера с ее помощью не надо обладать особыми знаниями, достаточно запомнить одну простую команду. Нажмите Win+R или Пуск - Выполнить и введите следующие команды:

rdp-shutdown-005.jpg

Разберем ключи команды подробнее:

  • s - выключение компьютера
  • r - перезагрузка
  • f - принудительное завершение мешающих перезагрузке процессов
  • t - время, через которое завершение работы будет выполнено, указывается в секундах через пробел. Если данный параметр не используется команда будет выполнена через 60 секунд.

Утилита PsShutdown от Sysinternals

Если штатные возможности вас по какой-либо причине не устраивают, то можно воспользоваться альтернативой - утилитой PsShutdown от Sysinternals. Разместите скачанный файл в любом удобном месте, лучше всего в одном из указанных в переменной PATH, либо добавьте туда ее расположение, это позволить запускать ее по короткому имени, без указания пути. Синтаксис утилиты похож на синтаксис стандартной, но есть некоторые отличия, так для выключения выполните:

а для перезагрузки:

Поясним используемые ключи:

  • k - выключение системы
  • r - перезагрузка
  • f - принудительное завершение процессов
  • t - время выполнения команды

Если вместо ключа -k использовать для выключения ключ -s, то система завершит работу без выключения питания, старожилы должны хорошо помнить:

rdp-shutdown-006.jpg

Кроме того, данная утилита позволяет управлять питанием других ПК по сети. Если честно, то работать по сети умеет и штатная утилита shutdown, достаточно указать ключ:

Но есть один существенный недостаток - команда выполняется в контексте запустившего его пользователя, поэтому вы из дома не сможете выключить рабочий ПК, даже имея доступ в корпоративную сеть через VPN и имея учетные данные администратора сети.

PsShutdown данного недостатка лишена и позволяет указывать учетные данные для подключения к удаленному ПК, например:

Данная команда выполнит перезагрузку удаленного ПК computer использовав для подключения имя username и пароль password. Следует помнить, что указанный вами пользователь должен иметь права доступа к административному ресурсу ADMIN$. В среде Active Directory этим правом обладает администратор домена, а вот в одноранговой сети могут возникнуть затруднения.

Если вы попробуете выключить удаленную систему даже с использованием учетных данных локального администратора, то скорее всего получите ошибку Отказано в доступе.

rdp-shutdown-007.jpg

Это свидетельствует о том, что данный пользователь не имеет доступа к ресурсу ADMIN$. Чтобы его включить нужно выполнить два условия: включить общий доступ к файлам и принтерам

добавить параметр типа DWORD с именем

и установить его значение равным 1. После этого компьютер потребуется перезагрузить.

Попробуем снова выключить его удаленно.

rdp-shutdown-009.jpg

Как видим в этот раз команда отработала успешно.

PowerShell

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

Для выключения используйте команду:

А для перезагрузки:

Ключ -Force в данном случае аналогичен ключу -f команды shutdown и предполагает принудительное завершение работы мешающих выключению приложений.

Также PowerShell можно использовать для управления питанием по сети, например, можно выключить удаленный ПК командой:

  • ComputerName - имя удаленного компьютера, допускается перечисление нескольких имен через запятую
  • Credential - имя учетной записи для аутентификации в удаленной системе

При этом работа через PowerShell более безопасна, так как пароль не вводится открытым текстом и не остается в истории команд. Для аутентификации используются стандартные механизмы ОС.

rdp-shutdown-010.jpg

Как видим, для управления питанием в ОС Windows доступны самые разнообразные инструменты - на любой вкус и цвет. При этом все они доступны внутри терминальной сессии, какой из них использовать - дело личного вкуса и предпочтений.

Основные функции

PsShutdown является утилитой командной строки, которая работает на локальной или удаленной системе. При этом устанавливать какое-либо программное обеспечение на удаленных системах для запуска инструмента не нужно.


На экране 1 показан синтаксис PsShutdown, который требует как минимум одного аргумента, определяющего тип окончания работы системы. Это требование предохраняет пользователя от случайной перезагрузки локальной системы. Таблица содержит список режимов остановки системы, поддерживаемых утилитой. Как мы видим, PsShutdown имеет параметры, поддерживающие управление питанием в дополнение к стандартной остановке и перезагрузке системы. Если при запуске PsShutdown ввести хотя бы один из этих аргументов, определяющих тип остановки системы, PsShutdown отобразит диалоговое окно, представленное на экране 2, а затем исполнит заданную операцию по истечении 20 секунд (задержка исполнения команды по умолчанию).


Такие операции, как остановка, выключение и перезагрузка, обычно дают приложениям шанс отказаться от выполнения команды Shutdown. Например, если на пользовательской системе имеются открытые документы Microsoft Word с несохраненными изменениями, Word спрашивает пользователя, нужно ли сохранить файл перед выходом из программы. После окончания 5-секундного интервала, заданного по умолчанию (определяется параметром реестра HKEY_CURRENT_USERCONTROL PANELDesktopHungApp Timeout), Windows отображает диалоговое окно, в котором пользователю предлагается отказаться от остановки системы или выйти из приложения и продолжить процесс остановки. По умолчанию Windows всегда отображает это окно, но можно ввести команду PsShutdown -f для закрытия тех открытых приложений, которые содержат несохраненные данные.

psshutdown -m "The system requires a reboot to
complete hotfix installation" -t 22:00 -r

Если вы считаете, что некоторые пользователи сочтут неудобной перезагрузку в заданное время, и вы хотите дать им возможность отказаться от нее, используйте команду PsShutdown -c, которая добавит кнопку Cancel в окно оповещения. Если необходимо отказаться от выполнения команды Shutdown, которая уже запущена, воспользуйтесь переключателем -а для отмены операции.

Блокировка и выход из системы

В дополнение к стандартным операциям завершения работы системы, PsShutdown поддерживает две операции, соответствующие категории управления рабочим столом. Это операции блокировки (lock) и завершения сеанса (logoff). Возможно, вы применяете групповые политики для того, чтобы задать время, когда компьютер не будет использоваться, по истечении которого сетевая рабочая станция автоматически блокируется. Однако, если вы ушли от компьютера и не заблокировали его консоль вручную, а вам необходимо сделать это немедленно, не дожидаясь окончания заданного интервала, после которого он заблокируется автоматически, и вы не хотите возвращаться к этой системе, на помощь придет команда PsShutdown -l , которая немедленно заблокирует систему.

Выбор систем

PsShutdown, подобно большинству утилит в пакете PsTools, имеет несколько способов выбора компьютеров, с которыми предстоит работать. Запуск команды без определения имени компьютера распространяет действие PsShutdown на локальную систему. Задать имя удаленной системы (например, comp1) можно, включив двойной слэш (), следующий перед именем компьютера, как показано в примере:

psshutdown -r comp1

Вы можете включить в команду несколько компьютеров, используя следующий синтаксис: comp1,comp2,comp3

Вы также можете ввести символ звездочки (*) для выбора всех систем в текущем домене:*

Если вам необходимо достаточно часто выполнять операцию перезагрузки на различных группах компьютеров, можно включить имена этих систем в текстовый файл, а затем определить имя файла после символа @ в команде PsShutdown. Например, команда на перезагрузку систем, определенных в файле с именем complist.txt, должна быть следующей:

psshutdown -r @complist.txt

В текстовый файл нужно поместить имя каждого компьютера на отдельных строках без использования перед именем двойного слэша.

Если попытаться применить PsShutdown для управления компьютером, который уже выключен, команда может привести к минутному зависанию перед прекращением ее работы по тайм-ауту. Это стандартное время задержки в процессе восстановления соединений Windows с компьютерами, оно может несколько замедлить операцию перезагрузки, запущенную на многих компьютерах. Для уменьшения времени, в течение которого PsShutdown будет устанавливать соединение перед запуском операции, следует использовать переключатель -n , стоящий перед желаемым временем тайм-аута, заданным в секундах.

PsShutdown изнутри

PsShutdown разделяет возможности удаленного доступа с несколькими другими компонентами пакета PsTools, включающего PsExec. PsShutdown устанавливает в систему службу Windows, которая будет управляться через административную системную папку совместного доступа ADMIN$, запускает эту службу, затем посылает ей команду, которая отражает параметры, заданные пользователем для этой команды. После завершения выполнения команды служба удаляется. Поэтому следует разрешить совместный доступ к файлам на тех удаленных компьютерах, на которых предстоит применить PsShutdown. Кроме того, необходима системная папка совместного доступа Admin$ (определена по умолчанию), которая должна быть доступна по протоколам Common Internet File System (CIFS)/Server Message Block (SMB) и Remote Procedure Call (RPC) TCP/IP портам. Учетная запись, под которой запускается PsShutdown, должна быть членом административной группы на всех управляемых системах, иначе нужно использовать ключ -u , который определяет учетную запись с соответствующими правами.

date

15.10.2018

directory

Вопросы и ответы

comments

комментариев 6

Команда shutdown имеет следующий синтаксис:

shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \\компьютер][/t xxx][/d [p|u]xx:yy [/c "комментарий"]]

команда shutdown синтаксис

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

Выключение Windows командой Shutdown

Для выключения ОС Windows и компьютера необходимо использовать команду shutdown с ключом /s.

Перезагрузка Windows

Чтобы перезагрузить компьютер, необходимо добавить параметр /r. После выполнения этой команды Windows корректно перезагрузится.

shutdown /r - перезагрузка компьютера

Завершение сеанса пользователя

Чтобы завершить текущую сессию пользователя (logout), нужно выполнить команду:

shutdown /l завершение сенаса пользоватеоя

Эта команда аналогично выполнению команды logoff.

Перевод компьютера в режим гибернации

Для перевода компьютер в режим гибернации (в этом режиме все содержимое памяти записывается в файл hyberfil.sys на диск и компьютер переходит в спящий режим с пониженным электропотреблением), выполните команду:

shutdown /r /c “Этот сервер будет перезагружен через 60 секунд.”

Отложенное выключение / перезагрузка компьютера

shutdown /s /t 600 /c "Сервер будет выключен через 10 минут. Сохраните свои документы!"

Пользователю будет выдано предупреждение о запланированном выключении: Ваш сеанс будет завершен.

shutdown - Ваш сеанс будет завершен.

Работа Windows будет завершена через 100 мин

Отмена выключения / перезагрузки компьютера

После запуска команды выключения или перезагрузки Windows, по умолчанию утилита shutdown ожидает 60 секунд, не выполняя никаких действия. Администратора может отменить перезагрузку или выключение устройства, если в течении этого времени успеет выполнить команду:

shutdown /a - отмена перезагрузки Выход из системы отменен

Перезагрузить компьютер немедленно

Чтобы выключить или перезагрузить компьютер немедленно, не ожидая стандартные 60 секунд, нужно указать значение 0 для параметра /t. Например, для немедленной перезагрузки компьютера:

Очень важный ключ /f. Я использую его практически всегда при выключении или перезагрузки серверов Windows. Данный атрибут обеспечивает принудительное завершение всех запущенных программ и процессов, не ожидая подтверждения от пользователя (не будем же мы ждать подтверждения закрытия программ от всех пользователей на терминальном сервере, его можно просто не дождаться).

Запуск команды shutdown на удаленных компьютерах

Вы можете перезагрузить удаленный компьютер по сети, для этого у вас должен быть к нему сетевой доступ, а учетная запись, из-под которой запускается команда shutdown должна входить в группу локальных администраторов на удаленном компьютере (сервере):

shutdown /r /t 120 /m \\192.168.1.100

shutdown /r //m - перезагрузка удаленного компьютера

Если все указанные условия выполняются, но при выполнении команды shutdown появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам (C$, ADMIN$), изменив значение параметра LocalAccountTokenFilterPolicy на 1.

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f

Если вам необходимо удаленно перезагрузить множество компьютеров, их список можно сохранить в текстовый файл и запустить удаленную перезагрузку всех компьютеров с помощью такого PowerShell скрипта:

Графический интерфейс команды shutdown

Для тех, кому не комфортно работать в командной строке, есть графический интерфейс для команды shutdown, чтобы его вызвать, наберите:

shutdown /i - графический интерфейс команды shutdown

Как вы видите, в диалоге удаленного завершения работы вы можете добавить несколько компьютеров, которые нужно перезагрузить/выключить, указать текст уведомления и задать причину выключения для сохранения в журнале Windows.

Ярлык для перезагрузки компьютера

Для удобства пользователей вы можете создать на рабочем столе ярлыки для выключения или перезагрузки компьютера с нужными настройками. Такой ярлык может быть полезен для выполнения перезагрузки из RDP сессии, когда отсутствуют кнопки перезагрузки/завершения работы компьютера в меню Пуск.

ярлык на рабочем столе для перезагрузки компьютера

Если вы хотите, чтобы ваш компьютер или сервер всегда выключался / перезагружался в определенное время, вы можете добавить команду shutdown с определенными параметрами в планировщик заданий Windows taskschd.msc.

Например, следующее задание планировщика будет ежедневно перезагружать компьютер ночью в 0:00.

Читайте также: