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


Get-Process

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

Синтаксис

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

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

NameWithUserName

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

IdWithUserName

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

Id

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

InputObjectWithUserName

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

InputObject

Get-Process
    -InputObject <Process[]>
    [-ComputerName <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<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 командлету, который форматирует процессы с помощью представления "Приоритет ".

Представление "Приоритет" и другие представления определяются в .ps1xml файлах форматирования в домашнем каталоге PowerShell ($PSHOME).

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

Get-Process -Name powershell | Format-Table -Property @(
    'Handles'
    @{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
    @{ Name = 'PM(K)';  Expression = { [int] ($_.PM / 1KB) } }
    @{ Name = 'WS(K)';  Expression = { [int] ($_.WS / 1KB) } }
    @{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
    'Id'
    @{ Name = 'SI'; Expression = 'SessionId' }
    'ProcessName'
    'StartTime'
) -AutoSize
Handles NPM(K) PM(K) WS(K) CPU(s)   Id SI ProcessName StartTime
------- ------ ----- ----- ------   -- -- ----------- ---------
    655     34 69424 83424 2.20   4240  1 powershell  4/14/2025 10:40:10 AM
    572     36 68768 57260 7.41   4968  1 powershell  4/13/2025 3:33:50 PM
    405     26 38144 30340 1.80   8776  1 powershell  4/14/2025 9:54:27 AM

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

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

Get-Process -Name powershell -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
10.0.19041.320   10.0.19041.32... C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

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

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

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

Get-Process -Name SQL* -Module

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

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

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

Get-Process -Name powershell -IncludeUserName
Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     powershell
Get-CimInstance -ClassName Win32_Process -Filter "name='powershell.exe'" |
    Invoke-CimMethod -MethodName GetOwner
Domain   ReturnValue User   PSComputerName
------   ----------- ----   --------------
DOMAIN01           0 user01

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

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

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

Get-Process -Name powershell
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    561      44    47564      40740       6.48   2604   1 powershell
    642      40    72040      24372      23.53   3576   1 powershel
Get-Process -Id $PID
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    647      40    72464      30716      23.67   3576   1 powershell

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

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

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

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

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

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

Параметры

-ComputerName

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

Укажите имя NetBIOS, IP-адрес или полное доменное имя (FQDN) одного или нескольких компьютеров. Чтобы указать локальный компьютер, используйте имя компьютера, точку (.или localhost).

Этот параметр не зависит от удаленного взаимодействия Windows PowerShell. Параметр ComputerName этого командлета можно использовать, даже если компьютер не настроен для выполнения удаленных команд.

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

Тип:

String[]

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

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

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

-FileVersionInfo

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

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

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

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

Использование этого параметра совпадает с доступом к свойству 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)

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

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

-IncludeUserName

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

Для использования этого параметра необходимо запустить PowerShell с повышенными правами пользователя (запуск от имени администратора).

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

Тип: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

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

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

-Module

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

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

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

Использование этого параметра совпадает с доступом к свойству 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 .

Примечания

Windows 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 (WMI Win32_Process ) можно использовать в PowerShell в качестве альтернативы Get-Process. Дополнительные сведения можно найти здесь

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

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

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

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