Powershell. Как получить владельца процесса в Windows

Get process owner. Как узнать имя владельца процесса в Powershell.

Небольшая статья о том как с помощью Powershell получить список процессов и особенно как получить владельца процесса на локальном и удаленном компьютере разными способами.

На написание данной статьи меня натолкнула проблема с периодическим повышенным потреблением оперативной памяти на некоторых серверах. Доходило до того, что к ним невозможно было даже подключиться по RDP. Но с помощью Powershell можно было вычислить «пожирателей» ресурсов. В процессе изучения возможности получения информации о владельце процессов выяснилось, что получить ее можно несколькими способами: Get-Process, Get-WmiObject и Get-CimInstance. Поскольку меня интересовали процессы, потребляющие больше всего памяти, в статье будут примеры с сортировкой по этому параметру. Все действия, описанные в статье, выполнялись в оболочке, запущенной от имени Администратора.

Первый способ как получить владельца процесса. Get-Process.

Получение списка процессов и их владельцев на локальном компьютере не представляет сложности, особенно с пятой(если не ошибаюсь) версии Powershell. Для того чтобы получить список всех процессов используем командлет Get-Process с параметром IncludeUsername.

Для получения 10 процессов с наибольшим потреблением памяти команда будет выглядеть так:

Еще:  Профиль Powershell. Персональные настройки профиля.

Ну и отформатированный вывод только с нужными свойствами:

Для получения списка процессов на удаленном компьютере нужно прибегнуть к помощи командлета Invoke-Command:

При необходимости укажите учетные данные при помощи параметра -Credential.

Второй способ. Get-WmiObject.

При использовании данного способа для локального компьютера команда выглядит так:

Еще:  Как создать виртуальную машину VMware с помощью PowerCLI.

а для удаленного так:

Третий способ. Get-CIMInstance.

Ну и по третьему методу совсем коротенько. Укажу код только для получения информации с удаленного компьютера. Вся разница между удаленным и локальным выполнением команд заключается только в параметрах -ComputerName и -Credential при необходимости. Итак код:

Переменную $processes можно не объявлять, а просто продолжить конвейер команд.

На этом всё, надеюсь статья поможет кому-то в получении списка процессов и особенно их владельцев. Естественно вы можете сортировать процессы  по другим параметрам, выбирать другое количество процессов и т.д.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх