Поделиться через


Get-Process

Возвращает процессы, выполняемые на локальном компьютере.

Синтаксис

Name (по умолчанию)

Get-Process
    [[-Name] <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

NameWithUserName

Get-Process
    [[-Name] <String[]>]
    -IncludeUserName
    [<CommonParameters>]

Id

Get-Process
    -Id <Int32[]>
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

IdWithUserName

Get-Process
    -Id <Int32[]>
    -IncludeUserName
    [<CommonParameters>]

InputObject

Get-Process
    -InputObject <Process[]>
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

InputObjectWithUserName

Get-Process
    -InputObject <Process[]>
    -IncludeUserName
    [<CommonParameters>]

Описание

Командлет Get-Process получает процессы на локальном компьютере.

Без параметров этот командлет получает все процессы на локальном компьютере. Можно также указать определенный процесс по имени процесса или идентификатору процесса (PID) или путем отправки объекта System.Diagnostics.Process в этот командлет.

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

  • Модуль: получение сведений для каждого модуля, загруженного в процесс.
  • FileVersionInfo: получение сведений о версии файла для основного модуля процесса.

Замечание

Модуль представляет собой исполняемый файл или библиотеку динамической компоновки (DLL), загруженную в процесс. Процесс содержит один или несколько модулей. Основной модуль — это модуль, используемый для первоначального запуска процесса. Дополнительные сведения см. в разделе "Класс ProcessModule".

Примеры

Пример 1. Получение списка всех выполняемых процессов на локальном компьютере

Get-Process

Эта команда получает список всех выполняемых процессов на локальном компьютере. Определение каждого столбца отображения см. в разделе NOTES .

Чтобы просмотреть все свойства объекта Process , используйте Get-Process | Get-Member. По умолчанию PowerShell отображает определенные значения свойств с помощью таких единиц, как килобайты (K) и мегабайты (M). Фактические значения при доступе с помощью оператора доступа к члену (.) находятся в байтах.

Пример 2. Отображение подробных сведений об одном или нескольких процессах

Get-Process winword, explorer | Format-List *

Этот конвейер отображает подробные сведения о winword процессах и explorer процессах на компьютере. Он использует параметр Name для указания процессов, но не указывает необязательное имя параметра. Оператор конвейера (|) передает объекты process в Format-List командлет, который отображает все доступные свойства (*) и их значения для каждого объекта.

Вы также можете определить процессы по идентификаторам процессов. Например, Get-Process -Id 664, 2060.

Пример 3. Получение всех процессов с рабочим набором больше указанного размера

Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB

Командлет Get-Process возвращает выполняемые процессы. Выходные данные передаются Where-Object командлету, который выбирает объекты со значением WorkingSet больше 20 971 520 байт.

В первом примере Where-Object используется блок скрипта для сравнения свойства WorkingSet каждого объекта Process . Во втором примере Where-Object командлет использует упрощенный синтаксис для сравнения свойства WorkingSet . В этом случае -GT является параметром, а не оператором сравнения. Второй пример также использует числовый литерал суффикс в качестве краткой альтернативы 20971520. В PowerShell MB представляет мультипликатор mebibyte (MiB). 20MB равно 20 971 520 байтам.

Пример 4. Отображение процессов на компьютере в группах на основе приоритета

$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority

Эти команды отображают процессы на компьютере в группах на основе их класса приоритета. Первая команда получает все процессы на компьютере и сохраняет их в переменной $processes .

Вторая команда передает объекты Process , хранящиеся в переменной $processesSort-Object командлету, а затем Format-Table командлету, который форматирует процессы с помощью представления "Приоритет ".

Пример 5. Добавление свойства в вывод по умолчанию "Get-Process"

Get-Process -Name pwsh | Format-Table -Property @(
    @{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
    @{ Name = 'PM(M)';  Expression = { [int] ($_.PM / 1MB) } }
    @{ Name = 'WS(M)';  Expression = { [int] ($_.WS / 1MB) } }
    @{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
    'Id'
    @{ Name = 'SI'; Expression = 'SessionId' }
    'ProcessName'
    'StartTime'
) -AutoSize
NPM(K) PM(M) WS(M) CPU(s)   Id SI ProcessName StartTime
------ ----- ----- ------   -- -- ----------- ---------
    84    46    79 18.297 3188  1 pwsh        4/14/2025 10:40:10 AM
    66    30    90 4.328  4640  1 pwsh        4/13/2025 3:33:50 PM
    66    30    90 4.516  9204  1 pwsh        4/14/2025 9:54:27 AM

Этот пример извлекает процессы из локального компьютера и передает каждый объект Process командлету Format-Table . Format-Table повторно создает вывод по умолчанию объекта Process с помощью сочетания имен свойств и вычисляемых свойств. Отображение включает дополнительное свойство StartTime , которое не присутствует в отображении по умолчанию.

Пример 6. Получение сведений о версии для процесса

Get-Process -Name pwsh -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
7.5.0 SHA: 99da… 7.5.0.500        C:\Program Files\PowerShell\7\pwsh.exe

Эта команда использует параметр FileVersionInfo для получения сведений о версии файла для основного pwsh модуля процесса. Основной модуль — это файл, используемый для запуска процесса, который в данном случае является pwsh.exe.

Чтобы использовать эту команду с процессами, которыми вы не владеете в Windows Vista и более поздних версиях Windows, необходимо запустить PowerShell с повышенными правами пользователя (запуск от имени администратора).

Пример 7. Получение модулей, загруженных с помощью указанного процесса

Get-Process -Name SQL* -Module

Эта команда использует параметр module для получения модулей, загруженных всеми процессами с именем, начинаемым с SQL.

Чтобы использовать эту команду с процессами, которыми вы не владеете в Windows Vista и более поздних версиях Windows, необходимо запустить PowerShell с повышенными правами пользователя (запуск от имени администратора).

Пример 8. Поиск владельца процесса

Get-Process -Name pwsh -IncludeUserName
WS(M)   CPU(s)      Id UserName                       ProcessName
-----   ------      -- --------                       -----------
46.53    21.70    3188 DOMAIN01\user01                pwsh
Get-CimInstance -ClassName Win32_Process -Filter "name='pwsh.exe'" |
    Invoke-CimMethod -MethodName GetOwner
Domain   ReturnValue User   PSComputerName
------   ----------- ----   --------------
DOMAIN01           0 user01

Первая команда показывает, как получить владельца процесса. Выходные данные показывают, что владелец DOMAIN01\user01.

Второй конвейер показывает другой способ получения владельца процесса с помощью Get-CimInstance и Invoke-CimMethod. Класс Win32_Process с фильтром извлекает pwsh процессы, а вызываемый GetOwner() метод возвращает сведения о домене и пользователе процесса. Этот метод доступен только в Windows и не требует повышенных прав пользователя.

Пример 9. Используйте автоматическую переменную для идентификации процесса, в котором размещен текущий сеанс.

Get-Process -Name pwsh
NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21     105.95       4.33    1192  10 pwsh
    79    83.81     117.61       2.16   10580  10 pwsh
Get-Process -Id $PID
NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21      77.53       4.39    1192  10 pwsh

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

Первая команда получает все pwsh процессы, выполняемые. Вторая команда получает pwsh процесс, в котором размещается текущий сеанс.

Пример 10. Получение всех процессов с заголовком главного окна и их отображение в таблице

Get-Process |
    Where-Object -Property MainWindowTitle |
    Format-Table -Property Id, Name, MainWindowTitle -AutoSize

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

MainWindowTitle является одним из многих полезных свойств типа объекта Diagnostics.Process , который Get-Process возвращается. Чтобы просмотреть все свойства, используйте Get-Process | Get-Member.

Параметры

-FileVersionInfo

Указывает, что этот командлет получает сведения о версии файла для программы, которая выполняется в процессе.

В Windows Vista и более поздних версиях Windows необходимо запустить PowerShell с повышенными правами пользователя (запуск от имени администратора), чтобы использовать этот параметр в процессах, которые не принадлежат.

Использование этого параметра совпадает с доступом к свойству MainModule.FileVersionInfo каждого объекта Process . При использовании этого параметра Get-Process возвращает объект FileVersionInfo , а не объект Process . Выходные данные, созданные с помощью этого параметра, невозможно передать командлету, который ожидает объект Process , например Stop-Process.

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:FV, FVI

Наборы параметров

Name
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
Id
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
InputObject
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Id

Указывает один или несколько процессов по идентификатору процесса (PID). Можно указать несколько идентификаторов, разделенных запятыми. Чтобы получить PID процесса, используйте Get-Process. Чтобы получить ИДЕНТИФИКАТОР текущего сеанса PowerShell, используйте $PID.

Свойства параметра

Тип:

Int32[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:ИД процесса (PID)

Наборы параметров

Id
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False
IdWithUserName
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-IncludeUserName

Указывает, что эта команда добавляет свойство UserName для каждого возвращаемого объекта Process .

Свойства параметра

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

NameWithUserName
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
IdWithUserName
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
InputObjectWithUserName
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-InputObject

Указывает один или несколько объектов Process . Используйте переменную, содержащую объекты, или команду или выражение, которое получает объекты.

Свойства параметра

Тип:

Process[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

InputObject
Position:Named
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
InputObjectWithUserName
Position:Named
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Module

Указывает, что этот командлет получает модули, загруженные процессом.

В Windows Vista и более поздних версиях Windows необходимо запустить PowerShell с повышенными правами пользователя (запуск от имени администратора), чтобы использовать этот параметр в процессах, которые не принадлежат.

Использование этого параметра совпадает с доступом к свойству Modules каждого объекта Process . При использовании этого параметра Get-Process возвращает объект ProcessModule , а не объект Process . Выходные данные, созданные с помощью этого параметра, невозможно передать командлету, который ожидает объект Process , например Stop-Process.

При совместном использовании параметров Module и FileVersionInfo этот командлет возвращает объект FileVersionInfo с информацией о версии файла всех модулей.

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Name
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
Id
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
InputObject
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Name

Указывает один или несколько процессов по имени процесса. Можно указать несколько имен процессов, разделенных запятыми, и использовать подстановочные знаки. -Name Использование параметра является необязательным.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False
Aliases:Имя процесса

Наборы параметров

Name
Position:0
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False
NameWithUserName
Position:0
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

Входные данные

Process

Объекты Process можно передать в этот командлет.

Выходные данные

Process

По умолчанию этот командлет возвращает объект System.Diagnostics.Process.

FileVersionInfo

При использовании параметра FileVersionInfo этот командлет возвращает объект System.Diagnostics.FileVersionInfo .

ProcessModule

При использовании параметра Module без параметра FileVersionInfo этот командлет возвращает объект System.Diagnostics.ProcessModule .

Примечания

PowerShell включает следующие псевдонимы для Get-Process:

  • Все платформы:
    • gps
  • Виндоус:
    • ps

На компьютерах под управлением 64-разрядной версии Windows 64-разрядная версия PowerShell получает основной модуль и 64-разрядные модули процесса. 32-разрядная версия PowerShell получает только 32-разрядные модули процессов.

Предупреждение

При использовании Get-Process для получения 64-разрядного процесса в 32-разрядной версии PowerShell свойства, такие как Path и MainModule возвращаемый объект Process , являются $null. Необходимо использовать 64-разрядную версию PowerShell или класс Win32_Process .

Чтобы получить сведения о процессе с удаленного компьютера, используйте командлет Invoke-Command. Дополнительные сведения см. в разделе Invoke-Command.

В Windows можно использовать класс инструментария управления Windows (WMI) Win32_Process в PowerShell в качестве альтернативы Get-Process. Дополнительные сведения можно найти здесь

Отображение объекта Process по умолчанию — это представление таблицы, включающее следующие столбцы.

  • NPM(K): объем нестраничной памяти, используемой процессом в килобайтах.
  • PM(M): объем страницы памяти, используемой процессом в мегабайтах.
  • WS(M): размер рабочего набора процесса в мегабайтах. Рабочий набор состоит из страниц памяти, на которые недавно ссылается процесс.
  • ЦП: время процессора, используемое для всех процессоров в секундах.
  • идентификатор: идентификатор процесса (PID) процесса.
  • SI: идентификатор сеанса процесса.
  • ProcessName: имя процесса.

Вы можете использовать встроенные альтернативные представления для объектов Process , доступных с Format-Tableпомощью таких объектов, как StartTime и Priority. Вы также можете создавать собственные представления.

Описание всех доступных элементов объекта Process см. в разделе "Свойства процесса " и "Методы процесса".