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 -ComputerName S1, localhost | 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, MachineName, ProcessName -AutoSize
NPM(K) PM(K) WS(K) VM(M) CPU(s) Id MachineName ProcessName
------ ----- ----- ----- ------ -- ----------- -----------
6 23500 31340 142 1.70 1980 S1 powershell
6 23500 31348 142 2.75 4016 S1 powershell
27 54572 54520 576 5.52 4428 localhost powershell
В этом примере извлекаются процессы с локального и удаленного компьютера (S1).
Полученные процессы передаются по конвейеру в Format-Table
команду, которая добавляет свойство MachineName к стандартному 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, который является main модулем для процесса PowerShell.
Чтобы выполнить эту команду с процессами, которые не принадлежат в Windows Vista и более поздних версиях Windows, необходимо открыть PowerShell с параметром Запуск от имени администратора.
Пример 7. Получение модулей, загруженных с помощью указанного процесса
Get-Process SQL* -Module
Эта команда использует параметр Module для получения модулей, загруженных процессом. Эта команда получает модули для процессов, имена которых начинаются с SQL.
Чтобы выполнить эту команду в Windows Vista и более поздних версиях Windows с процессами, которыми вы не владеете, необходимо запустить PowerShell с параметром Запуск от имени администратора.
Пример 8. Поиск владельца процесса
PS C:\> Get-Process powershell -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 требует повышенных прав пользователя (запуск от имени администратора). В выходных данных показано, что владельцем является 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. Получение всех процессов с main заголовком окна и их отображение в таблице
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize
Эта команда возвращает все процессы с заголовком главного окна и отображает их в таблице, где также указаны идентификатор и имя процесса.
Свойство mainWindowTitle является лишь одним из многих полезных свойств возвращаемого объекта Get-Process
Process.
Чтобы просмотреть все свойства, передайте результаты Get-Process
команды в Get-Member
командлет Get-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
возвращает объект FileVersionInfoSystem.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 каждого объекта процесса.
При использовании этого параметра этот командлет возвращает объект ProcessModuleSystem.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 |
Входные данные
Объект процесса можно передать в этот командлет по конвейеру.
Выходные данные
System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Diagnostics.ProcessModule
По умолчанию этот командлет возвращает объект System.Diagnostics.Process . При использовании параметра FileVersionInfo возвращается объект System.Diagnostics.FileVersionInfo . Если вы используете параметр Module без параметра FileVersionInfo , он возвращает объект System.Diagnostics.ProcessModule .
Примечания
- Вы также можете ссылаться на этот командлет по его встроенным псевдонимам, ps и gps. Подробнее см. в статье about_Aliases.
- На компьютерах под управлением 64-разрядной версии Windows 64-разрядная версия PowerShell получает только 64-разрядные модули процессов, а 32-разрядная версия PowerShell — только 32-разрядные модули процессов.
- Свойства и методы объекта инструментария управления Windows (WMI) можно использовать Win32_Process в PowerShell. Дополнительные сведения см. в разделе
Get-WmiObject
и пакете SDK для WMI. - По умолчанию процесс отображается как таблица, которая содержит следующие столбцы. Описание всех свойств объектов процесса см. в разделе Свойства процесса в библиотеке MSDN.
- Дескрипторы: количество дескрипторов, открытых процессом.
- NPM(K): объем памяти без страниц, используемой процессом, в килобайтах.
- PM(K): объем доступной для страницы памяти, используемой процессом, в килобайтах.
- WS(K): размер рабочего набора процесса в килобайтах. Рабочий набор состоит из страниц памяти, на которые недавно ссылался процесс.
- VM(M): объем виртуальной памяти, используемой процессом, в мегабайтах. Виртуальная память используется для хранения файлов подкачки на диске.
- ЦП: количество процессорного времени, которое процесс использовал на всех процессорах, в секундах.
- Идентификатор: идентификатор процесса (PID) процесса.
- ProcessName: имя процесса. Описание понятий, связанных с процессами, см. в центре справки и поддержки, а также в справке диспетчера задач.
- Вы также можете использовать встроенные альтернативные представления процессов, доступные с
Format-Table
помощью , например StartTime и Priority, и создавать собственные представления.