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


Get-Process

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

Синтаксис

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

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

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

Описание

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

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

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

Параметры

-ComputerName <string[]>

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

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

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-FileVersionInfo

Получает информацию о версии программы, выполняющейся в конкретном процессе.

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

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Id <Int32[]>

Задает один или несколько процессов, используя их идентификаторы (PID). При вводе нескольких идентификаторов необходимо разделять их запятыми. Чтобы определить идентификатор процесса, введите команду get-process.

Обязательно?

true

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-InputObject <Process[]>

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

Обязательно?

true

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByValue)

Принимать подстановочные знаки?

false

-Module

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

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

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

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Name <string[]>

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

Обязательно?

false

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

true

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

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

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

System.Diagnostics.Process

Объект процесса можно передать командлету Get-Process по конвейеру.

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

System.Diagnostics.Process, System.Diagnotics.FileVersionInfo, System.Diagnostics.ProcessModule

По умолчанию командлет Get-Process возвращает объект System.Diagnostics.Process. При использовании параметра FileVersionInfo он возвращает объект System.Diagnotics.FileVersionInfo. При использовании параметра Module (без параметра FileVersionInfo) он возвращает объект System.Diagnostics.ProcessModule.

Примечания

Параметры Name, ID и InputObject нельзя использовать в одной команде.

Командлет Get-Process также можно вызывать с помощью встроенных псевдонимов "ps" и "gps". Дополнительные сведения см. в разделе About_Aliases.

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

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

-- Handles: количество дескрипторов, открытых текущим процессом.

-- NPM(K): объем невыгружаемой памяти, используемой процессом, в КБ.

-- PM(K): объем выгружаемой памяти, используемой процессом, в КБ.

-- WS(K): размер рабочего множества процесса, в КБ. Рабочее множество состоит из страниц памяти, к которым недавно обращался процесс.

-- VM(M): объем виртуальной памяти, используемой процессом, в МБ. Виртуальная память представляет собой хранилище файлов подкачки на диске.

-- CPU(s): объем процессорного времени, потраченного на выполнение процесса всеми процессорами, в секундах.

-- ID: идентификатор процесса (PID).

-- ProcessName: имя процесса.

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

Также можно использовать другие встроенные представления процессов, доступные с помощью командлета Format-Table (например, "StartTime" и "Priority"), либо создавать пользовательские представления. Дополнительные сведения см. в описании командлета Format-Table.

Пример 1

C:\PS>Get-Process

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





Пример 2

C:\PS>Get-Process winword, explorer | format-list *

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

Процессы также могут задаваться с помощью идентификаторов, Например, "get-process -id 664, 2060".





Пример 3

C:\PS>get-process | where-object {$_.WorkingSet -gt 20000000}

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

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





Пример 4

C:\PS>$a = get-process

C:\PS> get-process -inputobject $a | format-table -view priority

Описание
-----------
Эти команды выводят список выполняющихся на компьютере процессов, которые объединяются в группы на основе класса приоритета. 

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

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

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





Пример 5

C:\PS>get-process powershell -computername S1, localhost | ft @{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 -ne $()) { $_.CPU.ToString("N")}}}, Id, MachineName, ProcessName -auto


NPM(K) PM(K) WS(K) VM(M) CPU(s)   Id MachineName ProcessName
------ ----- ----- ----- ------   -- ----------- -----------
     6 23500 31340   142        1980 S1          powershell
     6 23500 31348   142        4016 S1          powershell
    27 54572 54520   576        4428 localhost   powershell

Описание
-----------
В этом примере представлена команда Format-Table (псевдоним = ft), которая добавляет свойство MachineName в стандартный набор отображаемых выходных данных командлета Get-Process.





Пример 6

C:\PS>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 необходимо запускать Windows PowerShell командой "Запуск от имени администратора".





Пример 7

C:\PS>get-process sql* -module

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

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





Пример 8

C:\PS>$p = get-wmiobject win32_process -filter "name='powershell.exe'"

C:\PS> $p.getowner()

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

Описание
-----------
На примере следующих команд показано, как определить владельца процесса. Поскольку у объекта System.Diagnostics.Process, получаемого с помощью командлета Get-Process, нет свойства или метода, возвращающего владельца процесса, команда использует
командлет Get-WmiObject для получения объекта Win32_Process, который представляет одноименный процесс.

Первая команда с помощью командлета Get-WmiObject получает процесс PowerShell. Этот процесс сохраняется в переменной $p.

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





Пример 9

C:\PS>get-process powershell

C:\PS> get-process -id $pid

C:\PS> 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


C:\PS> 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 определить хост-процесс текущего сеанса Windows PowerShell. Этот метод позволяет отличить хост-процесс от других процессов PowerShell, которые может потребоваться остановить или завершить.

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

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





См. также

Концепции

Get-Process
Start-Process
Stop-Process
Wait-Process
Debug-Process