Написание сценариев на основе служб терминалов (часть 14)

Опубликовано: 23 Апреля, 2023

  • Написание сценариев на основе служб терминалов (часть 1)
  • Написание сценариев на основе служб терминалов (часть 2)
  • Написание сценариев на основе служб терминалов (часть 3)
  • Написание сценариев на основе служб терминалов (часть 4)
  • Написание сценариев на основе служб терминалов (часть 5)
  • Написание сценариев на основе служб терминалов (часть 6)
  • Написание сценариев на основе служб терминалов (часть 7)
  • Написание сценариев на основе служб терминалов (часть 8)
  • Написание сценариев на основе служб терминалов (часть 9)
  • Написание сценариев на основе служб терминалов (часть 11)
  • Введение

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

    Прежде чем я начну…

    Мне пришло в голову, что я не предоставил текущий код для нашего скрипта в конце предыдущей статьи, поэтому я хочу пойти дальше и показать вам, как наш скрипт выглядит на данный момент:

    Прежде чем мы начнем, я хочу отметить, что в приведенном выше коде я добавил команду Pause в конец подпрограммы:sub_session. Это предотвращает очистку экрана сценарием до того, как вы успеете даже прочитать вывод.

    Сброс сеанса

    Теперь, когда наш сценарий может отображать информацию о сеансе, давайте добавим подпрограмму, которая позволит нам сбросить сеанс. Мы можем сделать это с помощью команды «Сбросить сеанс», но эта команда требует, чтобы мы предоставили номер сеанса. Для этого мы запросим у администратора номер сеанса, подтвердим номер сеанса, а затем сбросим сеанс.

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

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

    На этом этапе мы спрашиваем администратора, хотят ли они сбросить этот сеанс или нет, попросив его ввести Y или N. Значение считывается в переменную с именем _yn. Кстати, это не показано в блоке кода выше, но в начале скрипта я инициализировал эту переменную значением N, чтобы ничего случайно не сбрасывалось.

    Если администратор вводит N, то мы возвращаемся к подпрограмме цикла, ничего не делая. Если администратор вводит Y, то мы переходим ко второму имени подпрограммы:sub_reset2, выполняем фактическую перезагрузку сеанса, а затем возвращаемся к основному циклу сценария.

    Подключение и отключение

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

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

    Как видите, этот код является прямой адаптацией кода, который мы использовали для сброса сеанса. Изменив всего несколько символов, мы можем создать подпрограммы для установления соединения, как показано ниже:

    Отключение входа в систему

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

    Как видите, это чрезвычайно простая подпрограмма, использующая команду Change Logon с переключателем /Disable для отключения входа в систему. Как я уверен, вы уже догадались, вы можете включить вход в систему с помощью переключателя /Enable. Если вы хотите запретить новые входы в систему, но разрешить повторное подключение к существующим сеансам, вам следует использовать команду «Изменить вход в систему» с переключателем /Drain.

    Наш готовый скрипт

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

    Вывод

    Я очень надеюсь, что вам понравилась эта серия так же, как мне понравилось ее написание. Мне всегда нравилась творческая часть написания программ и сценариев, но это не то, чем я занимаюсь так часто, как хотелось бы.

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

    • Написание сценариев на основе служб терминалов (часть 1)
  • Написание сценариев на основе служб терминалов (часть 2)
  • Написание сценариев на основе служб терминалов (часть 3)
  • Написание сценариев на основе служб терминалов (часть 4)
  • Написание сценариев на основе служб терминалов (часть 5)
  • Написание сценариев на основе служб терминалов (часть 6)
  • Написание сценариев на основе служб терминалов (часть 7)
  • Написание сценариев на основе служб терминалов (часть 8)
  • Написание сценариев на основе служб терминалов (часть 9)
  • Написание сценариев на основе служб терминалов (часть 11)