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

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

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

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

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

ЗАПРОС СЕРВЕРА

Первая команда, о которой я хочу рассказать, это команда QUERY TERMSERVER. Когда вы введете эту команду, Windows создаст список всех терминальных серверов в вашей сети, как показано на рисунке A.

Изображение 28534
Рисунок A: Команда QUERY TERMSERVER заставляет Windows создать список всех терминальных серверов в сети.

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

Если вашей целью является создание автоматизированного сценария, я бы предложил выполнить команду QUERY TERMSERVER с ключом /CONTINUE. Это приводит к тому, что команда отображает список серверов терминалов в непрерывном потоке, а не останавливается после заполнения каждого экрана.

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

ЗАПРОС СЕРВЕР/ДОМЕН: Contoso

Последнее, что вы можете сделать с помощью этой команды, это то, что вы можете использовать ее для создания отчета, в котором перечислены MAC-адреса, связанные с каждым сервером терминалов. Для этого просто введите команду QUERY TERMSERVER, а затем параметр /ADDRESS. Вы можете увидеть, как выглядит результат на рисунке B.

Изображение 28535
Рисунок B. Команда QUERY TERMSERVER /ADDRESS выводит список MAC-адресов, связанных с каждым сервером терминалов.

ПРОЦЕСС ЗАПРОСА

Следующая команда, о которой я хочу рассказать, это команда QUERY PROCESS. Я уверен, вы знаете, что каждое приложение состоит из одного или нескольких процессов. Команда QUERY PROCESS позволяет увидеть процессы, запущенные в данный момент на терминальном сервере.

Как вы можете видеть на рисунке C, когда вы вводите команду QUERY PROCESS, Windows перечисляет пользователя, который запускает процесс, сеанс службы терминалов, через который запускается процесс, номер идентификатора сеанса, идентификатор процесса и имя. исполняемого файла, запустившего процесс (называемого образом).

Изображение 28536
Рисунок C. Команда QUERY PROCESS выводит подробную информацию о процессах, запущенных на сервере.

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

Изображение 28537
Рисунок D. Команда QUERY PROCESS * выводит список всех процессов, запущенных на сервере.

Хотя базовый отчет, создаваемый командой QUERY PROCESS, хорош, эта команда также может создавать отфильтрованное представление информации. Прежде чем я покажу вам, как это делается, я должен сказать вам, что информация о синтаксисе, предоставляемая при входе в ПРОЦЕСС ЗАПРОСА /? Команда немного вводит в заблуждение. Мне потребовалось некоторое время, чтобы понять, как заставить работать функцию фильтрации, но вот как это делается.

Если вы хотите создать отфильтрованное представление на основе идентификатора процесса, имени пользователя, имени сеанса или имени программы, вам нужно просто ввести команду QUERY PROCESS, а затем часть информации, по которой вы хотите отфильтровать. Например, предположим, что вы хотите создать отчет, показывающий только информацию, относящуюся к процессу номер 3360. Для этого вам не нужно будет вводить какие-либо переключатели командной строки или что-то еще. Вам нужно просто ввести команду QUERY PROCESS, а затем идентификатор процесса, в данном случае 3360. Результирующий отчет выглядит примерно так, как показано на рисунке E.

Изображение 28538
Рисунок E. Команда QUERY PROCESS позволяет создавать отчеты на основе конкретной информации.

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

ПРОЦЕСС ЗАПРОСА Администратор

Как видно на рис. F, Windows перечисляет все процессы, запущенные администратором.

Изображение 28539
Рисунок F. Команда администратора QUERY PROCESS заставляет Windows отображать все процессы, запущенные администратором.

Как вы, наверное, знаете, каждому сеансу службы терминалов присваивается идентификационный номер сеанса. Если вы посмотрите на рисунок D, то заметите, что команда QUERY PROCESS отображает идентификатор сеанса. Однако вы не можете отфильтровать выходные данные по идентификатору сеанса, просто добавив номер идентификатора сеанса в конец команды QUERY PROCESS.

Причина этого в том, что Windows не может отличить идентификатор сеанса от идентификатора процесса. Поэтому, если вы добавите число в конец команды QUERY PROCESS, Windows автоматически будет считать, что это число является идентификатором процесса.

Это не означает, что вы не можете фильтровать по идентификатору сеанса. Если вы хотите отфильтровать выходные данные по идентификатору сеанса, вам придется использовать переключатель командной строки /ID, за которым следует двоеточие и идентификатор сеанса. Например, если вы хотите увидеть все процессы, связанные с идентификатором сеанса номер 1, вы можете сделать это, введя следующую команду:

ПРОЦЕСС ЗАПРОСА /ID:1

Вы можете увидеть, как эта команда выглядит в действии, на рисунке G.

Изображение 28540
Рисунок G. Переключатель /ID можно использовать для фильтрации отчета по идентификатору сеанса.

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

Вывод

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

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

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

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