В конечном счете всем, кто управляет компьютерными сетями, приходится перезагружать определенное число компьютеров в процессе их обслуживания. Команда Shutdown в операционных системах Windows Server 2003 и Windows XP, а также утилита Shutdown из комплекта утилит Microsoft Windows 2000 Server Resource Kit обеспечивают основную функциональность, однако часто их возможностей недостаточно для обеспечения выключения или перезагрузки удаленных машин. Утилита PsShutdown, разработанная Sysinternal, является одной из программ свободно распространяемого пакета PsTools компании Sysinternals. Она обладает большей гибкостью и расширенными возможностями по сравнению с утилитой Shutdown от Microsoft. В дополнение к этому PsShutdown работает на операционных системах, начиная с Windows NT 4.0 и заканчивая более поздними, хотя некоторые параметры требуют наличия Windows 2000 и более поздних версий. Заинтересованные читатели могут обратиться к статье «Сценарий дистанционной остановки настольного компьютера», опубликованной в первом номере Windows IT Pro/RE за 2005 год, где рассматриваются другие утилиты, выполняющие удаленную остановку компьютера.

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

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

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

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

Выполняя операцию завершения работы (особенно на удаленных системах), вы, возможно, захотите оповестить активных пользователей о причинах выполнения перезагрузки системы и, возможно, даже дадите им большее, чем предусмотрено по умолчанию, время для сохранения изменений и завершения сеанса работы с системой. Для этого можно использовать команду PsShutdown с параметром -m и следующим за ним в кавычках (") сообщением, которое должно будет появиться в нижней части окна уведомления команды shutdown на клиентском компьютере. Можно задействовать переключатель -t для изменения заданного по умолчанию времени задержки остановки системы. Это время задается в секундах. Если желательно, чтобы команда PsShutdown была выполнена в определенное время, необходимо задать это время, используя 24-часовой формат. Следующая простая команда выполнит перезагрузку локальной системы в 22:00 и выдаст пользователям сообщение о причинах перезагрузки.

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

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

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

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

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

Выбор систем

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 , который определяет учетную запись с соответствующими правами.

Свободная загрузка

Можно взять PsShutdown с сайта http://www.sysinternals.com, загрузив пакет PsTools. Дополнительная информация о других компонентах пакета есть в статьях «PsList и PsKill» (Windows IT Pro/RE № 7 за 2004 год) и «PsExec» (Windows IT Pro/RE № 6 за 2004 год), InstantDoc ID 42919.


Редактор Windows & .NET Magazine, автор многих популярных утилит для Windows, в том числе Process Explorer и Regmon. mark@sysinternals.com