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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Первое, что вам нужно знать о создании скрипта, генерирующего отчет, — это как сохранить отчет. Например, в одной из предыдущих статей я показал вам, как использовать команду Query User. Как вы помните, ввод этой команды в окно командной строки приводит к тому, что Windows отображает информацию о пользователях, которые в данный момент подключены к вашему серверу. Хотя это хорошая команда, ее возможности очень ограничены, когда она используется сама по себе. В конце концов, все, что он делает, это отображает пользователей, которые в данный момент вошли в систему. Давайте представим, однако, что по какой-то причине вам нужно было сохранить эту информацию, чтобы вы могли просмотреть ее снова позже, не выполняя другой запрос. Самый простой способ добиться этого — перенаправить вывод в файл журнала.

Операционная система Windows использует знак «больше» (>) как способ указать, что вывод команды должен быть перенаправлен. Поэтому, если вы хотите создать файл журнала, содержащий результаты пользовательского запроса, вы должны ввести команду Запросить пользователя, знак «больше», а затем путь и имя файла журнала, который вы хотите создать. Например, если вы хотите создать журнал с именем SAMPLE.LOG, вы можете ввести следующую команду:

В этом примере файл журнала записывается в текущий каталог, каким бы он ни был. Сам файл журнала не представляет собой ничего особенного. На самом деле это не более чем текстовый файл. Кстати, обычным инструментом для открытия текстового файла в Windows является Блокнот. Однако вы можете использовать эту команду Type для просмотра содержимого текстового файла из командной строки. Например, если вы хотите просмотреть только что созданный файл журнала, вы должны ввести следующую команду:

Вы можете увидеть пример этой команды, показанный на рисунке A.

Изображение 28511
Рисунок A. Команда «Тип» позволяет просмотреть содержимое текстового файла.

Иногда вы можете столкнуться с ситуацией, когда текстовый файл настолько длинный, что его невозможно отобразить без прокрутки экрана. В этом случае вы можете добавить символ вертикальной черты (|) и слово «Дополнительно» в конец команды «Текст». Это заставит Windows делать паузу после каждого экрана, заполненного информацией, и ждать нажатия клавиши, прежде чем отображать дополнительный текст. Например, если бы созданный нами файл журнала был слишком длинным, чтобы уместиться на экране, мы бы изменили команду «Тип», чтобы она выглядела следующим образом:

ТИП SAMPLE.LOG | БОЛЕЕ

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

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

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



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

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

В таких ситуациях вам нужно будет спроектировать свой скрипт так, чтобы имя файла менялось каждый раз, когда скрипт запускается. В идеале новое имя файла должно отражать дату или время запуска сценария, чтобы можно было легко определить, когда был создан каждый файл журнала. Хотите верьте, хотите нет, но сделать это проще, чем вы думаете. Предположим, вы хотите вывести результаты выполнения команды «Запрос пользователя» в файл с именем, зависящим от даты. Команды для этого:


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

Вывод

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

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

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

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

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

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

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

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

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

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

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

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

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