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