Бывает так, что нам нужно посмотреть, запущена та или иная программа на удаленном компьютере. Просто и быстро. Без стороннего софта. Ну или по каким-то другим причинам посмотреть запущенные процессы.
Если говорить о локальном компьютере, то абсолютное большинство использует для мониторинга процессов Windows Диспетчер задач. Но вот в случае с удаленным компьютером он нам не помощник. Рассмотрим очень простой способ.
Активные пользователи командной строки Windows знают о существовании такой замечательной команды, как tasklist. Команда делает именно то, о чем можно было подумать, т.е. выводит список процессов. Может она это сделать и для удаленного компьютера. Синтаксис команды таков:
tasklist [/S имя_удаленного_компьютера [/U имя_пользователя [/P пароль]]] [/M модуль | /SVC | /V] [/FI фильтр] [/FO формат] [/NH]
/S — необходимо указать имя удаленного компьютера, если подключаемся к такому. Для локального компьютера не указывается;
/U — имя пользователя, от которого будут просматриваться процессы. Пользователь должен быть администратором;
/P — пароль от указанной учетной записи пользователя, если пароль не указан, будет выполнен запрос на ввод пароля;
/M — отображение всех процессов, которые используют указанное имя. Если не задано, будут отображаться все процессы;
/SVC — отображение служб для каждого процесса;
/V — ведение подробного протоколирования;
/FI — отображение процессов, которые соответствуют указанному фильтру;
/FO — формат файла для экспорта, допустимы значение TABLE, LIST и CSV;
/NH — отключение отображение заголовка в выводим данных, доступно для форматов TABLE и CSV.
Таким образом, если нам просто нужно посмотреть список запущенных процессов на локальном компьютере, то достаточно просто набрать
tasklist

Если же мы хотим посмотреть процессы на удаленном компьютере (например, с именем Test-PC), то команда должна выглядеть следующим образом:
tasklist /s Test-PC
Кроме этого момента, вынесенного в заголовок статьи, разберем другие примеры использования команды tasklist. Что, если мы не хотим просматривать все процессы, а только начинающиеся с win? Тогда мы можем использовать фильтр:
tasklist /fi "imagename eq win*"

Со стороны написанное может казаться непонятным. Поэтому разберем синтаксис составления фильтров в команде tasklist.
Начнем с того, что фильтр заключается в кавычки. Далее идёт очень простая схема:
[имя_фильтра] [оператор] [значение]
Есть ограниченное число имён фильтров, операторов и значений. Они в таблице ниже.
Имя фильтра | Допустимые операторы | Допустимые значения | Описание |
STATUS | eq, ne | RUNNING, SUSPENDED, NOT RESPONDING, UNKNOWN | Статус процесса |
IMAGENAME | eq, ne | Имя (часть имени) процесса(-ов) | Подходящие по наименованию процессы |
PID | eq, ne, gt, lt, ge, le | Значение PID | Идентификатор процесса |
SESSION | eq, ne, gt, lt, ge, le | Номер сеанса | Номер сеанса в Windows |
SESSIONNAME | eq, ne | Имя сеанса | Имя сеанса в Windows |
CPUTIME | eq, ne, gt, lt, ge, le | Время ЦП в формате чч:мм:сс (часы:минуты:секунды) | Время обработки задачи |
MEMUSAGE | eq, ne, gt, lt, ge, le | Используемая ОЗУ (в КБ) | Размер используемой задачей оперативной памяти |
USERNAME | eq, ne | Имя пользователя | Пользователь, из-под которого запущен процесс |
SERVICES | eq, ne | Имя службы | Используемые службы |
WINDOWTITLE | eq, ne | Заголовок окна | Заголовок окна процесса |
MODULES | eq, ne | Имя dll (динамически подключаемой библиотеки) | Используемые библиотеки |
Отметим, что для удаленных компьютеров не действуют фильтры «WINDOWTITLE» и «STATUS».
Используемые операторы сравнения означают следующее:
eq — равно;
ne — не равно;
gt — больше;
lt — меньше;
ge — больше или равно;
le — меньше или равно.
Синтаксис фильтров является, пожалуй, самой сложной частью. Все следующие примеры проще. Тот же просмотр служб, относящихся к задачам, вызывается следующей командой:
tasklist /svc

Если мы хотим вывести информацию в файл, то нужно использовать параметр /FO. Конечно же, у вас должны быть права на запись в каталог, куда вы хотите поместить файл с выводимой информацией. Команда
tasklist /fo csv > c:\primer.csv
выведет информацию в формате .csv в файл primer.csv, который находится на диске C.
Что, если нам надо посмотреть какие процессы используют определенную dll-библиотеку? Например, библиотеку cfgmgr32.dll. Это можно сделать командой
tasklist /m cfgmgr32.dll
Получилось несколько больше, чем просто статья о просмотре процессов на другом компьютере. 🙂 Это потому, что я считаю, что, заводя речь о какой-то команде, надо давать более-менее подробное описание её сути. Конечно, в данной статье приведены не все примеры и не все нюансы команды tasklist. Их можно изучить самостоятельно.
Как можно отобразить на моем компе процесс запущенной на удаленом компе программы.
Например: я двойным кликом нажимаю на 1C (1cestart.exe) и начинается минутное ожидание запуска… А у меня нет времени сидеть и ждать, я в макрорекордере прописал все действия, но по уже запущенному окну… А оно может запуститься спустя 1 мин, а может и запуститься спустя 1 мин и 1 сек. (если вообще в ошибке не погрязнет).
Макрорекордер срабатывает на запущенные окна на моем компе — удаленных не видит…
Как быть?
Такой вопрос: а если мне нужно получать состояние процесса на удалённом компьютере в сети? tasklist пишет, что для удаленного компьютера он не может применить фильтр STATUS
Можно использовать утилиту PsList с ключом -s. Подробнее о синтаксисе здесь.