Get-Process

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

Синтаксис

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

Описание

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

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

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

Примеры

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

Get-Process

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

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

Get-Process winword, explorer | Format-List *

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

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

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

Get-Process | Where-Object {$_.WorkingSet -gt 20000000}

Эта команда возвращает все процессы, размер рабочего набора которых превышает 20 МБ. Он использует Get-Process командлет для получения всех выполняемых процессов. Оператор конвейера (|) передает объекты Where-Object процесса командлету, который выбирает только объект со значением, превышающим 20 000 000 байт для свойства WorkingSet .

WorkingSet — это одно из многих свойств объектов процесса. Чтобы просмотреть все свойства, введите Get-Process | Get-Member. По умолчанию значения всех свойств объема указываются в байтах, несмотря на то что по умолчанию отображаются они отображаются в килобайтах и мегабайтах.

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

$A = Get-Process
$A | Get-Process | Format-Table -View priority

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

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

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

Пример 5. Добавление свойства в стандартное отображение выходных данных Get-Process

Get-Process powershell | Format-Table `
    @{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
    @{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
    @{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
    @{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
    @{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
    Id, ProcessName, StartTime -AutoSize

NPM(K)  PM(K) WS(K)   VM(M)  CPU(s)    Id ProcessName StartTime
------  ----- -----   -----  ------    -- ----------- ---------
   143 239540 259384 2366162 22.73  12720 powershell  12/5/2022 3:21:51 PM
   114  61776 104588 2366127 11.45  18336 powershell  12/5/2022 7:30:53 AM
   156  77924  82060 2366185 10.47  18812 powershell  12/5/2022 7:30:52 AM
    85  48216 115192 2366074 1.14   24428 powershell  12/8/2022 9:14:15 AM

В этом примере извлекаются процессы с локального компьютера. Извлеченные процессы передаются Format-Table в команду, которая добавляет свойство StartTime в стандартное Get-Process выводное отображение.

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

Get-Process powershell -FileVersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.6713.1       6.1.6713.1 (f... C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

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

Чтобы выполнить эту команду с процессами, которые не принадлежат в Windows Vista и более поздних версиях Windows, необходимо открыть PowerShell с помощью параметра "Запуск от имени администратора ".

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

Get-Process SQL* -Module

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

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

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

Get-Process pwsh -IncludeUserName

Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     powershell

$p = Get-WmiObject Win32_Process -Filter "name='powershell.exe'"
$p.GetOwner()

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 3
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Domain           : DOMAIN01
ReturnValue      : 0
User             : user01

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

Вторая и третья команда — еще один способ найти владельца процесса.

Вторая команда используется Get-WmiObject для получения процесса PowerShell. Он сохраняет его в переменной $p .

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

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

Get-Process powershell

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
308      26        52308      61780   567     3.18   5632 powershell
377      26        62676      63384   575     3.88   5888 powershell

Get-Process -Id $PID

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
396      26        56488      57236   575     3.90   5888 powershell

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

Первая команда получает все процессы PowerShell в текущем сеансе.

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

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

Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize

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

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

Параметры

-ComputerName

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

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

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

Type:String[]
Aliases:Cn
Position:Named
Default value:Local computer
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-FileVersionInfo

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

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

Параметры FileVersionInfo и ComputerName командлета Get-Process в той же команде нельзя использовать.

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

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

Type:SwitchParameter
Aliases:FV, FVI
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

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

Type:Int32[]
Aliases:PID
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-IncludeUserName

Указывает, что значение UserName объекта Process возвращается с результатами команды.

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

Type:Process[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Module

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

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

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

Этот параметр эквивалентен получению свойства Modules каждого объекта процесса. При использовании этого параметра этот командлет возвращает объект ProcessModule System.Diagnostics.ProcessModule, а не объект процесса. Таким образом, вы не можете передать выходные данные команды командлету, который ожидает объект процесса, например Stop-Process.

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

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

Type:String[]
Aliases:ProcessName
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

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

Process

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

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

Process

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

FileVersionInfo

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

ProcessModule

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

Примечания

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

  • gps
  • ps

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

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

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

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

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

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