Интересует использование командлета PowerShell Get-Process для отображения запущенных процессов системы? С помощью Get-Process
вы можете найти владельца процесса, идентификатор процесса или даже местоположение процесса на диске.
В этой статье вы узнаете, как использовать командлет Get-Process
в PowerShell на примерах из реального мира. Если управление процессами на Windows или Linux звучит для вас интересно, то продолжайте читать!
Связано: Как завершить процесс в Linux с использованием ps, pgrep, pkill и других инструментов!
Предварительные условия
Прежде чем двигаться дальше, вот необходимые предварительные условия для следования примерам в этой статье.
- Хотя Windows PowerShell 5.1 достаточен для большинства примеров здесь, PowerShell 7.1 и выше необходим для поддержки Linux.
Связано: Обновление до PowerShell 7: Пошаговое руководство
- В этой статье используются Windows 10 и Ubuntu 20.04 LTS, но любая ОС, на которой работает PowerShell, подойдет.
Готовы? Давайте погрузимся и управляем процессами!
Отображение запущенных процессов
Get-Process
управляет локальными процессами. В этом первом примере вы используете модуль PowerShell Get-Process c
mdlet. Эта команда отображает все запущенные процессы.
Get-Process
возвращает моментальную снимок информации о запущенных процессах системы. Для отображения информации о процессах в реальном времени Windows предлагает Диспетчер задач Windows, а Linux предлагает команду top.
Для начала откройте консоль PowerShell и выполните команду Get-Process
. Обратите внимание, что Get-Process
возвращает информацию о запущенных процессах, как показано ниже. Формат вывода идентичен для операционных систем Windows и Linux.

Get-Process
cmdlet on Windows to display local processes.По умолчанию
gps
илиps
существуют как псевдонимы командыGet-Process
. Поскольку PowerShell 7 кроссплатформенный, командаps
конфликтует с встроенной командой Linux. Поэтому на Linux работает только псевдонимgps
.
Смысл вывода Get-Process
может быть не сразу очевиден. По умолчанию свойства Get-Process
описаны более подробно ниже.
- NPM(K) – Количество непостоянной памяти, которую использует процесс, отображается в килобайтах, как указано в обозначении
(K)
. - PM(M) – Количество используемой процессом разделяемой памяти, отображаемое в мегабайтах, как указано в обозначении
(M)
. - WS(M) – Размер рабочего набора процесса, отображаемый в мегабайтах. Рабочий набор состоит из страниц памяти, на которые недавно ссылался процесс.
- VM(M) – Количество виртуальной памяти, используемой процессом, отображаемое в мегабайтах. Включает хранение в файле подкачки на диске.
- CPU(S) – Количество процессорного времени, использованного процессом для всех процессов, отображаемое в секундах.
- Id – Идентификатор процесса (PID) процесса.
- SI – Идентификатор сеанса запущенного процесса. Сеанс
0
указывает, что процесс доступен для всех пользователей,1
указывает, что процесс существует под первым вошедшим пользователем и так далее. - ProcessName – Имя запущенного процесса.
Чтобы отобразить список псевдонимов свойств, сопоставленных полным именам свойств, используйте команду
Get-Process | Get-Member -MemberType 'AliasProperty'
.
Вот еще один отличный пример. Для каждого экземпляра процесса brave, который он находит, он использует ID этого процесса ($_.id
) и передает его в Get-NetTCPConnection
. Затем PowerShell использует Get-NetTCPConnection
, чтобы найти информацию о каждом сетевом соединении, открытом процессом brave.
Запустите следующий код в вашей сессии PowerShell, когда запущен браузер Brave.
Спасибо Jay Adams из SystemFrontier!
Поздравляем, теперь вы можете просматривать все запущенные процессы как в Windows, так и в Linux с помощью Get-Process
!
Поиск конкретных атрибутов процесса
Get-Process
возвращает множество разных свойств запущенных процессов, как вы уже видели ранее. Как и со всеми другими объектами PowerShell, вы можете выбирать свойства объектов.
Теперь давайте рассмотрим простой пример того, как вы можете извлечь конкретные свойства для определенного процесса:
- Запустите калькулятор Windows.
2. С открытой консолью PowerShell выполните команду Get-Process
, используя параметр Name
, чтобы показать только все запущенные процессы с именем Калькулятор. Вы увидите тот же вывод, что и ранее.
Get-Process
возвращает много свойств, как и ожидалось. Возможно, вам нужно найти только использование процессора со значением в столбце CPU(s)
. Оберните команду Get-Process
в круглые скобки и обратитесь к свойству CPU
, как показано ниже. Вы увидите, что возвращается только значение для свойства CPU
.
Обратите внимание, что
Get-Process
возвращает имя с именемCPU(s)
, а фрагмент кода выше использует только имяCPU
. Иногда PowerShell не показывает реальное имя свойства в выводе. Этот концепт выполняется с использованием файла форматирования PS1XML.
Время ЦП выражается как общее количество секунд по всем ядрам. Чтобы сделать его более читаемым для человека, округлите его до десятых с использованием метода Math
, как показано ниже.

Вы можете использовать вышеуказанный подход, чтобы найти любые другие свойства, такие как
Id
, если вы хотите видеть только идентификатор процесса.
Оставьте приложение Калькулятор запущенным. Вы будете использовать это приложение в течение оставшейся части примеров.
Получение использования памяти процесса
Исправление проблем с медленной работой систем может быть вызовом, причиной которой часто является ограниченная память. Продолжая с приложением Калькулятор, получите процесс Калькулятор
и отобразите только свойство VM
. Как видно ниже, использованная память отображается в мегабайтах (МБ).

Calculator
process memory usage.Для помощи в понимании использования памяти используйте встроенные множители преобразования PowerShell, чтобы перевести мегабайты (МБ) в гигабайты (ГБ). В приведенном ниже примере вы переведете использованную память в ГБ, а затем используете библиотеку математики .NET метод Round
для округления значения, как показано на скриншоте ниже.
Использование встроенных утилит PowerShell для преобразования значений упрощает понимание вывода. Читайте далее, чтобы узнать, как найти идентификатор процесса.

Раскрытие малоизвестных свойств
Не все свойства включены или отображаются по умолчанию с помощью Get-Process
. Читайте далее, чтобы узнать больше о свойствах Path
и UserName
и о том, как их использовать!
Определение, где находится исполняемый файл процесса
Существует много мест на системе, где может храниться исполняемый файл процесса. Если процесс в настоящее время запущен, Get-Process
облегчает поиск пути файловой системы процесса, несмотря на то, что по умолчанию Path
не отображается. Как показано ниже, свойство Path
содержит местоположение файловой системы исполняемого файла процесса.

Get-Process
to display a process’s full file system path on Windows.Как и в Windows, Get-Process
в Linux также возвращает путь к файловой системе. В приведенном ниже примере процесс gnome-calculator
запущен с отображением пути в выводе консоли.

Get-Process
to display a process’s full file system path on Linux.Искусные злоумышленники могут назвать процесс таким же или похожим образом, как доверенный. Поэтому возможность определить путь к файловой системе полезна в сценарии реагирования на инциденты безопасности (IR). Читайте далее, чтобы узнать, как найти владельца процесса, так как в стандартном выводе отсутствует UserName
.
Поиск Владельца Процесса
Чтобы включить значение UserName
в вывод, вам нужно использовать параметр IncludeUserName
. Важно знать владельца процесса, особенно чтобы избежать непреднамеренного завершения процесса другого пользователя. Как показано ниже, свойство UserName
теперь включено в вывод процесса.

Calculator
process on Windows.Наконец, читайте далее, чтобы узнать о использовании Get-Process
на удаленном компьютере для получения информации о процессах!
Поиск Процессов на Удаленных Компьютерах
Хотя в Windows PowerShell Get-Process
сам по себе не имеет возможностей для работы с удаленными компьютерами, всегда можно воспользоваться PowerShell Remoting и Invoke-Command
для его запуска на удаленных компьютерах.
Связано: Как настроить PSRemoting с Windows и Linux
Однако, если вы используете Linux или выполняете PowerShell 6 в Windows, у вас теперь есть параметр ComputerName
, который вы можете использовать для запроса процессов на удаленных компьютерах.
Параметр
-ComputerName
был удален в PowerShell 7.x, поскольку cmdlet не имеет непосредственного отношения к удаленному управлению. Для достижения того же результата вы можете обернуть его вInvoke-Command
, например:Invoke-Command -ComputerName "ИмяКомпьютера" -ScriptBlock { Get-Process -ProcessName 'process' }
Когда эта команда выполняется на удаленном компьютере, вывод такой же, как если бы команда Get-Process
была выполнена локально.
Ниже приведен пример удаленного управления другим компьютером и получения запущенных процессов:

Вы можете выбирать несколько компьютеров, разделяя их запятой, например:
Get-Process -ComputerName SRV1,SRV2.
Следующие шаги
В этой статье вы узнали, как использовать PowerShell Get-Process
cmdlet для поиска запущенных процессов с помощью PowerShell на локальных и удаленных компьютерах как на Linux, так и на Windows.
Теперь, что вы сделаете с этим знанием? Попробуйте передать процесс, полученный с помощью Get-Process
, команде Stop-Process
на локальном или удаленном компьютере, чтобы завершить его!
Source:
https://adamtheautomator.com/powershell-get-process/