CHGLOGON — управление входом в сеансы сервера терминалов

CHGLOGON управляет разрешением новых сеансов на сервере терминалов Windows. Аналог CHANGE LOGON — синтаксис, все ключи и практические примеры.

CHGLOGON — команда CMD для управления разрешением новых пользовательских сеансов на сервере терминалов Windows (Remote Desktop Services). Это точный аналог CHANGE LOGON: обе команды принимают одинаковые ключи и дают одинаковый результат. Используется администраторами для подготовки сервера к обслуживанию без обрыва активных соединений.

Синтаксис команды CHGLOGON

CHGLOGON /QUERY
CHGLOGON /ENABLE
CHGLOGON /DISABLE
CHGLOGON /DRAIN
CHGLOGON /DRAINUNTILRESTART

Команда всегда требует одного из ключей — запуск без параметров выведет справку. Выполняется только с правами администратора.

Ключи и параметры

Ключ Описание Пример
/QUERY Выводит текущее состояние: разрешён ли вход в новые сеансы CHGLOGON /QUERY
/ENABLE Разрешает новые сеансы для всех пользователей CHGLOGON /ENABLE
/DISABLE Немедленно запрещает новые сеансы (текущие не завершаются) CHGLOGON /DISABLE
/DRAIN Запрещает новые сеансы и ждёт завершения всех текущих CHGLOGON /DRAIN
/DRAINUNTILRESTART Запрещает новые сеансы до следующей перезагрузки сервера CHGLOGON /DRAINUNTILRESTART

Примеры использования

Проверка состояния входа перед обслуживанием

Перед любым действием стоит убедиться в текущем статусе сервера.

CHGLOGON /QUERY

Команда выведет одну из строк: Session logins are currently enabled или Session logins are currently disabled. Также покажет режим DRAIN, если он активен.

Плавное отключение перед обновлением

Нужно установить обновления, не обрывая работу текущих пользователей.

CHGLOGON /DRAIN

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

Жёсткое отключение новых входов

Требуется срочно закрыть доступ, например при обнаружении инцидента безопасности.

CHGLOGON /DISABLE

Все попытки создать новый сеанс будут отклонены немедленно. Активные сеансы продолжат работу.

Блокировка входов до перезагрузки после патчей

Патч применён, сервер нужно перезапустить, но хочется дождаться конца рабочего дня.

CHGLOGON /DRAINUNTILRESTART

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

Восстановление доступа после обслуживания

Обслуживание завершено, нужно открыть сервер для пользователей.

CHGLOGON /ENABLE

Новые сеансы снова разрешены. Рекомендуется сразу проверить статус через CHGLOGON /QUERY.

Автоматизация через bat-скрипт технического обслуживания

Скрипт закрывает вход, ждёт завершения задач и снова открывает доступ.

@echo off
CHGLOGON /DRAIN
echo Ожидание завершения пользовательских сеансов...
rem ... выполнение задач обслуживания ...
CHGLOGON /ENABLE
CHGLOGON /QUERY

Скрипт последовательно переводит сервер в режим DRAIN, выполняет нужные операции и возвращает нормальный режим работы.

Частые ошибки и решения

Ошибка Причина Решение
«Отказано в доступе» при выполнении CMD запущена без прав администратора Запустить CMD от имени администратора
«CHGLOGON не является внутренней или внешней командой» Служба Remote Desktop Services не установлена Установить роль RDS через диспетчер сервера или проверить наличие chglogon.exe в System32
/QUERY показывает ENABLED, но пользователи не могут подключиться Блокировка может быть на уровне брандмауэра или лицензий RDS Проверить правила брандмауэра для порта 3389 и состояние лицензирования RDS
После /DRAIN сеансы «зависли» и не завершаются Пользователи оставили открытые несохранённые документы или зависшие процессы Выполнить QWINSTA для просмотра сеансов и LOGOFF <ID сеанса> для принудительного завершения
/DISABLE применён, а пользователи всё равно подключаются Подключение идёт не через стандартный RDP, а через другой механизм (например, теневую копию сеанса) Уточнить метод подключения пользователей; при необходимости заблокировать на уровне брандмауэра

Когда применять, а когда нет

CHGLOGON работает только на серверах с установленной ролью Remote Desktop Services (Windows Server). На рабочей станции Windows 10/11 с включённой функцией удалённого рабочего стола команда может присутствовать, но управление сеансами через неё ограничено. Команда требует прав локального администратора. В PowerShell частичным аналогом служит командлет Disable-RDSessionHost из модуля RemoteDesktop, однако он требует дополнительной настройки коллекций RDS. Для разовых операций CHGLOGON быстрее и проще.

FAQ

В чём разница между CHGLOGON и CHANGE LOGON?

Никакой функциональной разницы нет. CHGLOGON — это сокращённый псевдоним CHANGE LOGON. Обе команды вызывают один и тот же исполняемый файл и принимают одинаковые параметры. Используйте ту, которая удобнее для ввода.

Прервёт ли /DISABLE текущие сеансы пользователей?

Нет. /DISABLE только блокирует создание новых сеансов. Уже подключённые пользователи продолжат работу в своих сеансах без каких-либо прерываний.

Что произойдёт, если выполнить /DRAINUNTILRESTART и не перезагрузить сервер?

Сервер будет оставаться в режиме запрета новых входов бессрочно до первой перезагрузки. Чтобы вернуть доступ без перезагрузки, выполните CHGLOGON /ENABLE.

Как узнать, кто сейчас подключён, перед выполнением /DRAIN?

Выполните QWINSTA или QUERY SESSION — оба показывают список активных и отключённых сеансов с именами пользователей и ID сеансов.

Можно ли применить CHGLOGON к конкретному пользователю, а не ко всем?

Нет. CHGLOGON управляет только глобальным режимом входа для всего сервера целиком. Для ограничения доступа конкретного пользователя используйте групповые политики или права учётной записи.

Нужно ли уведомлять пользователей перед /DISABLE?

Хорошей практикой является отправка предупреждения через MSG * "Сервер будет недоступен через 15 минут" перед блокировкой входа. Это даёт пользователям время сохранить работу.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.