Написание сценариев на основе служб терминалов (часть 14)
- Написание сценариев на основе служб терминалов (часть 1)
Введение
В последней части этой серии мы интегрировали функцию, которая позволяла нам просматривать текущие сеансы службы терминалов, в структуру сценария, которую мы создали. В этой статье я хочу завершить серию, добавив в наш скрипт еще несколько функций.
Прежде чем я начну…
Мне пришло в голову, что я не предоставил текущий код для нашего скрипта в конце предыдущей статьи, поэтому я хочу пойти дальше и показать вам, как наш скрипт выглядит на данный момент:
Прежде чем мы начнем, я хочу отметить, что в приведенном выше коде я добавил команду Pause в конец подпрограммы:sub_session. Это предотвращает очистку экрана сценарием до того, как вы успеете даже прочитать вывод.
Сброс сеанса
Теперь, когда наш сценарий может отображать информацию о сеансе, давайте добавим подпрограмму, которая позволит нам сбросить сеанс. Мы можем сделать это с помощью команды «Сбросить сеанс», но эта команда требует, чтобы мы предоставили номер сеанса. Для этого мы запросим у администратора номер сеанса, подтвердим номер сеанса, а затем сбросим сеанс.
Код, используемый при сбросе сеанса, немного сложен, но мы не используем ничего нового. Вот код:
Как видите, мы просим администратора ввести номер сеанса, который он хочет сбросить. Мы читаем этот номер сеанса в переменную с именем _sesnum. Затем мы используем команду сеанса запроса, чтобы отобразить только этот сеанс для подтверждения.
На этом этапе мы спрашиваем администратора, хотят ли они сбросить этот сеанс или нет, попросив его ввести Y или N. Значение считывается в переменную с именем _yn. Кстати, это не показано в блоке кода выше, но в начале скрипта я инициализировал эту переменную значением N, чтобы ничего случайно не сбрасывалось.
Если администратор вводит N, то мы возвращаемся к подпрограмме цикла, ничего не делая. Если администратор вводит Y, то мы переходим ко второму имени подпрограммы:sub_reset2, выполняем фактическую перезагрузку сеанса, а затем возвращаемся к основному циклу сценария.
Подключение и отключение
Как вы, возможно, помните из предыдущих статей, мы можем использовать команду TSDISCON для отключения сеанса и команду TSCON для подключения к сеансу. С минимальными усилиями мы можем изменить приведенный выше код, чтобы упростить подключение и отключение сеансов.
Вы можете увидеть пример того, как выглядит код, который используется для отключения сеанса, ниже:
Как видите, этот код является прямой адаптацией кода, который мы использовали для сброса сеанса. Изменив всего несколько символов, мы можем создать подпрограммы для установления соединения, как показано ниже:
Отключение входа в систему
Последнее, что я хочу сделать, это создать несколько подпрограмм, которые можно использовать для отключения или разрешения входа пользователей в систему. Для этого нам понадобятся три отдельные подпрограммы. Один разрешит вход в систему, другой отключит вход в систему, а третий отключит новые входы в систему, но по-прежнему позволит пользователям подключаться к существующим сеансам. Код отключения логинов выглядит так:
Как видите, это чрезвычайно простая подпрограмма, использующая команду Change Logon с переключателем /Disable для отключения входа в систему. Как я уверен, вы уже догадались, вы можете включить вход в систему с помощью переключателя /Enable. Если вы хотите запретить новые входы в систему, но разрешить повторное подключение к существующим сеансам, вам следует использовать команду «Изменить вход в систему» с переключателем /Drain.
Наш готовый скрипт
В листинге ниже показан наш готовый скрипт. Как видите, мне пришлось добавить несколько опций меню, чтобы учесть все новые функции, которые мы добавили. Я также добавил строку кода вверху скрипта, которая показывает, разрешен ли в данный момент вход в систему. Вот готовый скрипт:
Вывод
Я очень надеюсь, что вам понравилась эта серия так же, как мне понравилось ее написание. Мне всегда нравилась творческая часть написания программ и сценариев, но это не то, чем я занимаюсь так часто, как хотелось бы.
Существует множество других функций, связанных со службами терминалов, которые можно выполнять с помощью сценариев, и я, вероятно, мог бы продолжать писать эту серию статей до бесконечности. Тем не менее, есть и другие темы, связанные с терминальным сервером, о которых я хочу написать, поэтому мне нужно завершить эту серию, чтобы я мог исследовать некоторые из этих других областей.
- Написание сценариев на основе служб терминалов (часть 1)