В редакцию регулярно поступают письма с вопросом, как организовать автоматическое завершение сеанса из командной строки. До последнего времени стандартного решения этой проблемы не было, но с выходом четвертой версии Microsoft Windows NT Server 4.0 Resource Kit ситуация изменилась. В Resource Kit версии 4 появилось две утилиты для выполнения этой задачи: исполняемый модуль logoff.exe и сценарий VBScript - logoff.vbs, причем сценарий обеспечивает даже более широкие функциональные возможности.

Для выполнения logoff.exe из пакетного файла используется синтаксис:


logoff [/n] [/f]

При запуске программы без параметров logoff переспрашивает, действительно ли нужно завершить сеанс. Если ответить «y» (yes), то Windows NT закрывает текущий сеанс, если, конечно, в это время нет приложений с несохраненными данными. Если хотя бы одно такое приложение в работе, оно может приостановить закрытие сеанса и переспросить о необходимости сохранения данных. Естественно, программа, требующая вмешательства пользователя, не очень подходит для автоматического выполнения пакетных заданий, поэтому авторы программы предусмотрели ключи /n и /f.

Если указан ключ /n, утилита logoff.exe не требует подтверждения, но в этом случае другие приложения все равно могут остановить процесс выхода из системы для сохранения данных. Хотя принудительное завершение сеанса с потерей несохраненных данных не способствует развитию дружеских отношений между пользователями и администраторами системы, все же можно представить себе ситуацию, когда этот способ завершения сеанса действительно необходим. В таком случае для принудительного завершения сеанса можно применить ключ /f.

Основное достоинство logoff.exe заключается в том, что это очень компактный исполняемый файл, не требующий наличия дополнительных средств. Реализованный в том же Resource Kit вариант утилиты в виде сценария VBScript позволяет завершить текущий сеанс пользователя не только на локальном, но и на удаленном компьютере. Обе программы можно найти в каталоге Resource Kit. Следует отметить, что если, находясь в этом каталоге, ввести в командной строке команду logoff, то будет выполнена программа logoff.exe, поскольку операционная система в первую очередь ищет исполняемые программы, и лишь затем пытается выполнить сценарии. Для выполнения сценария необходимо полностью указать в командной строке имя файла сценария VBScript, то есть logoff.vbs.

Поскольку сценарий logoff.vbs использует для работы интерфейс WBEM (Web-Based Enterprise Management, интерфейс обслуживания корпоративных систем на основе Web). Конечно же, для завершения сеансов на удаленном компьютере на нем тоже должен быть установлен интерфейс WBEM. Этот интерфейс стандартно установлен на всех системах Windows 2000, а для использования на компьютерах Windows NT интерфейс WBEM можно загрузить с сервера Microsoft, или найти необходимые установочные файлы в Resource Kit. Для выполнения сценария logoff.vbs используется синтаксис:


logoff.vbs /s  /u  /w  /f

Ключ /s используется для выполнения сценария на сервере servername, причем в этом случае следует задать имя администратора и пароль с ключами /u и /w, соответственно. Аналогично, для принудительного завершения сеанса можно задать ключ /f, а вот ключ /n не используется, так как сценарий никогда не переспрашивает, действительно ли следует завершить сеанс.

Предположим, что на сервере \\uptown пользователь BigGuy с паролем stingray имеет права администратора, тогда для принудительного завершения сеанса работающего на этом компьютере пользователя достаточно выполнить на другом компьютере команду


logoff.vbs /s \\uptown /u bigguy /w stingray /f

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

Марк Минаси – редактор Windows NT Magazine, имеет сертификат MCSE; является автором книги «Mastering Windows NT Server 4.0» (издательство Sybex). С ним можно связаться по адресу: mark@minasi.com.