Как получить список процессов windows

Как посмотреть список процессов в Windows на удаленном компьютере

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

Если говорить о локальном компьютере, то абсолютное большинство использует для мониторинга процессов 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 . Что, если мы не хотим просматривать все процессы, а только начинающиеся с win? Тогда мы можем использовать фильтр:

Использование фильтров в команде tasklist.

Со стороны написанное может казаться непонятным. Поэтому разберем синтаксис составления фильтров в команде 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 — меньше или равно.

Читайте также:  Как настроить проектор windows 10

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

Просмотр используемых служб в команде tasklist.

Если мы хотим вывести информацию в файл, то нужно использовать параметр /FO. Конечно же, у вас должны быть права на запись в каталог, куда вы хотите поместить файл с выводимой информацией. Команда

выведет информацию в формате .csv в файл primer.csv, который находится на диске C.

Что, если нам надо посмотреть какие процессы используют определенную dll-библиотеку? Например, библиотеку cfgmgr32.dll. Это можно сделать командой

Получилось несколько больше, чем просто статья о просмотре процессов на другом компьютере. 🙂 Это потому, что я считаю, что, заводя речь о какой-то команде, надо давать более-менее подробное описание её сути. Конечно, в данной статье приведены не все примеры и не все нюансы команды tasklist . Их можно изучить самостоятельно.

Команда TASKLIST — отобразить список задач на локальном или удаленном компьютере.

Команда TASKLIST используется для получения списка процессов, выполняющихся на локальном или удаленном компьютере в данный момент времени.

Формат командной строки:

Примеры использования TASKLIST.

tasklist /? — выдать краткую справку по использованию команды.

tasklist — отобразить на экране консоли список процессов выполняющихся на локальном компьютере в данный момент времени. Пример отображаемой информации

Имя образа — имя исполняемого файла данного процесса. System Idle Process — это не имя образа, а индикация режима простоя, когда ни один из процессов не выполняется.

PID — уникальный идентификатор процесса. Присваивается процессу при его создании.

Имя сессии — имя сессии отображает признак Services — процесс запущен в качестве системной службы, Console — интерактивный пользовательский процесс, RDP-Tcp#n — процесс, созданный удаленным подключением по RDP ( клиентами служб терминалов) — .

№ сеанса — номер сеанса пользователя.

Память — объем используемой процессом памяти.

tasklist /FO LIST — то же, что и в предыдущем примере, но выводимые данные представлены в виде списка:

tasklist /FO CSV — отобразить список процессов в формате полей, разделяемых запятой:

tasklist /fo csv /nh — то же, что и в предыдущем примере, но строка заголовка с названием колонок не отображается ( 1-я строка ).

tasklist -S SERVER — отобразить список процессов выполняющихся на удаленном компьютере SERVER в данный момент времени.

tasklist /m wsock32.dll — отобразить список процессов, которые подгружают библиотеку wsock32.dll . Пример отображаемых результатов выполнения команды:

tasklist /m — если имя модуля не задано, то отображается весь список процессов, и по каждому процессу — весь список модулей. Пример результата выполнения команды:

tasklist /SVC — отобразить информацию о системных службах. Пример:

В колонке Службы отображается короткое имя службы, например, DcomLaunch — для Службы Терминалов

tasklist -s 192.168.0.1 -U mydomain\admin -P mypass /FI «memusage gt 10000» — отобразить список процессов, использующих более 10000кб ( 10 Мб) памяти на компьютере с IP-адресом 192.168.0.1 . При подключении к удаленному компьютеру используется имя пользователя admin в домене mydomain и пароль mypass

tasklist /fi «username ne NT AUTHORITY\Система» | more — отобразить список процессов, выполняющихся не от имени локальной системной учетной записи. Для некоторых версий Windows, вместо русского Система нужно использовать System . Команда объединена в цепочку с more для организации постраничного вывода на экран.

tasklist -s 192.168.0.110 -U mydomain\admin -P mypass /FI «sessionname eq RDP*» — отобразить список процессов на удаленном компьютере, созданных клиентами служб терминалов.

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

Как получить подробные сведения о процессах в Windows 7

В статье «Анализ использования памяти с помощью Монитора ресурсов Windows 7» я рассказывал, как использовать Монитор ресурсов (Resource Monitor) для анализа распределения памяти в Windows 7. При этом я упомянул, что графа «Образ» (Image) в таблице «Процессы» (Processes) на вкладке «Память» (Memory) позволяет идентифицировать процессы приложений по имени исполняемого файла. Например, процесс «notepad.exe» со всей очевидностью принадлежит Блокноту (Notepad).

Читайте также:  Script для командной строки windows

Однако далеко не все процессы можно так легко опознать, и я получил уже немало вопросов от читателей по этому поводу. С идентификацией менее очевидных процессов поможет Диспетчер задач (Task Manager), и в этой статье я расскажу, как его использовать.

Запуск Диспетчера задач

Запустить Диспетчер задач в Windows 7 можно несколькими способами. Во-первых, можно нажать на панели задач правой кнопкой мыши и выбрать опцию «Запустить диспетчер задач» (Start Task Manager). Во-вторых, можно воспользоваться клавишной комбинацией [Ctrl]+[Shift]+[Esc]. И наконец в-третьих, можно запустить исполняемый файл Диспетчера задач из строки поиска меню «Пуск» (Start) — для этого введите taskmgr и нажмите [Enter]. В открывшемся окне выберите вкладку «Процессы» (Processes).

На вкладке «Процессы» есть графа «Описание» (Description, рис. A), в которой приводятся подробные сведения о каждом процессе.

Добавление столбцов на вкладке «Процессы»

Чтобы получить более подробные сведения о процессах Windows 7, воспользуйтесь командой «Выбрать столбцы» (Select Columns) в меню «Вид» (View). Появится диалоговое окно «Выбор столбцов страницы процессов» (Select Process Page Columns), показанное на рис. B. Отсюда можно добавить на вкладку «Процессы» дополнительные колонки — например, столбец «Путь к образу» (Image Path Name), в котором указывается полный путь к файлу, инициировавшему запущенный процесс Windows 7, или графу «Командная строка» (Command Line), где приводится полная команда для запуска процесса со всеми параметрами и переключателями.

Помимо этих столбцов, на вкладку «Процессы» можно добавить и многие другие. Всего в окне «Выбор столбцов страницы процессов» доступно более 30 опций, описание которых не входит в задачи данной статьи. Узнать о назначении всех колонок можно из справочной статьи «Что означают столбцы памяти Диспетчера задач?» на сайте Microsoft.

Опция «Открыть место хранения файла»

Помимо добавления на вкладку столбцов «Путь к образу» и «Командная строка», можно нажать на процессе правой кнопкой мыши и выбрать опцию «Открыть место хранения файла» (Open File Location). При этом откроется папка со всеми файлами, относящимися к данному процессу. К примеру, для процесса «hqtray.exe» на моем компьютере открывается папка «VMware Player» (рис. C).

Еще один источник информации о процессе Windows 7 — окно свойств, которое можно вызвать, нажав на процессе правой кнопкой мыши и выбрав опцию «Свойства» (Properties). Полезные сведения содержатся на вкладке «Подробно» (Details, рис. D).

Если вас интересует процесс «Svchost.exe», можно воспользоваться утилитой командной строки Tasklist, чтобы узнать о нем поподробнее. «Svchost.exe» — общее имя процесса для всех служб, запускаемых из динамически подключаемых библиотек (DLL). Чтобы узнать, каким службам принадлежит этот процесс, откройте командную строку (Command Prompt) и выполните следующую команду:

Вы получите список всех запущенных процессов, в котором приводятся сведения о службах для каждого процесса «Svchost.exe» (рис. E).

Узнав имена служб, запомните идентификатор (PID) процесса «Svchost.exe». Теперь откройте вкладку «Службы» (Services) в Диспетчере задач и отсортируйте список по столбцу «ИД процесса» (PID). Найдите нужный идентификатор и посмотрите описание, чтобы понять назначение службы Windows 7 (рис. F).

Сведения, к сожалению, весьма скудные, но хотя бы позволяют понять, какая именно служба запустила процесс «Svchost.exe».

А что думаете вы?

А вам приходилось использовать Диспетчер задач для поиска информации о запущенных процессах Windows 7? Поделитесь своим опытом в комментариях!

Управление процессами с помощью PowerShell

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

Читайте также:  Настройка замкнутой программной среды astra linux

Список доступных командлетов управления процессами в Windows 10 можно вывести так:

Get-Command –Noun Process

  • Get-Process – получить список запущенных процессов;
  • Start-Process – запустить процесс/программу;
  • Stop-Process – принудительно остановить процесс;
  • Debug-Process – используется для отладки процессов;
  • Wait-Process – используется для ожидания окончания процесса.

Get-Process – получение списка запущенных процессов

Командлет Get-Process позволяет вывести список запущенных процессов на локальном компьютере.

По-умолчанию выводятся следующие свойства запущенных процессов:

  • Handles – количество дескрипторов ввода — вывода, которые отрыл данный процесс;
  • NPM(K) — Non-paged memory (невыгружаемый пул). Размер данных процесса (в Кб.), которые никогда не попадают в файл подкачки на диск;
  • PM(K) – размер памяти процесса, которая может быть выгружена на диск;
  • WS(K) – размер физической памяти в Кб, используемой процессом (working set).
  • CPU(s) – процессорное время, использованное процессом (учитывается время на всех CPU);
  • ID — идентификатор процесса;
  • SI (Session ID) – идентификатор сеанса процесса (0 — запущен для всех сессий, 1 – для первого залогиненого пользователя, 2 — для второго и т.д.);
  • ProcessName – имя процесса.

Чтобы получить все свойства нескольких процессов:

Get-Process winword, notep* | Format-List *

Можно вывести только определенный свойства процессов. Например, имя (ProcessName) время запуска (StartTime), заголовок окна процесса (MainWindowTitle), имя исполняемого файла (Path) и наименование разработчика (Company):

Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft

Вывести список запущенных процессов пользователя с графическими окнами (в список не попадут фоновые и системные процессы):

Get-Process | Where-Object <$_.mainWindowTitle>| Format-Table Id, Name, mainWindowtitle

С помощью параметра IncludeUserName можно вывести имя пользователя (владельца), который запустил процесс:

Get-Process -Name winword -IncludeUserName

С помощью Where-Object можно выбрать процессы в соответствии с заданными критериями. Например, выведем все процессы, которые используются более 200 Мб оперативной памяти, отсортируем процессы в порядке убывания используемого объема RAM, размер памяти из Кб преобразуем в Мб:

Как мы уже говорили ранее командлет Get-Process в параметре CPU содержит время использования процессора конкретным процессом в секундах. Чтобы отобразить процент использования CPU процессами (по аналогии с Task Manager), используйте такую функцию:

function Get-CPUPercent
<
$CPUPercent = @<
Name = ‘CPUPercent’
Expression = <
$TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
[Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
>
>
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
>

Чтобы найти зависшие процессы (которые не отвечают), выполните команду:

Start-Process, Stop-Process: запуск и остановка процессов из PowerShell

Чтобы запустить новый процесс с помощью PowerShell используется команда:

Start-Process -FilePath notepad

Если каталог с исполняемым файлом отсутствует в переменной окружения $env:path, нужно указать полный путь к файлу:

Start-Process -FilePath ‘C:\distr\app.exe’

Можно запустить программу и передать ей аргументы:

Start-Process -FilePath ping -ArgumentList «-n 10 192.168.1.11»

С помощью параметра WindowStyle вы можете задать режим запуска окна процесса (normal, minimized, maximized, hidden). Например, чтобы запустить программу в максимально развернуом окне и дождаться завершения процесса, выполните команду:

Start-Process -FilePath tracert -ArgumentList «192.168.1.11» –wait -windowstyle Maximized

С помощью командлета Stop-Process можно завершить любой процесс. Например, чтобы закрыть все запущенные процессы notepad:

Stop-Process -Name notepad

По-умолчанию не запрашивается подтверждение завершения процесса. Закрываются все процессы, которые соответствуют указанным критериям. Чтобы запросить подтверждение завершения для каждого процесса, добавьте –Confirm.

Stop-Process -Name notepad.exe -Confirm

(Get-Process -Name notepad).Kill()

Из PowerShell можно принудительно завершить все приложения, которые не отвечают диспетчеру процессов Windows:

Get-Process | where-object <$_.Responding -eq $false>| Stop-Process

PowerShell: управление процессами на удаленном компьютере

С помощью аргумента ComputerName командлет Get-Process позволяет управлять процессами на удаленных компьютерах (должен быть включен и настроен WinRM).

Get-Process -ComputerName dc01, dc02| Format-Table -Property ProcessName, ID, MachineName

Если вы хотите завершить процесс на удаленном компьютере, имейте в виду, что у командлета Stop-Process отсутствует параметр –ComputerName. Для завершения процесса на удаленном компьютере можно использовать такой PowerShell код:

$RProc = Get-Process -Name notepad -ComputerName dc01
Stop-Process -InputObject $RProc

Оцените статью