Remote Process Explorer — управление процессами на локальном или удаленном компьютере в режиме реального времени. Можно завершать выбранные процессы, запускать новые или изменить приоритет процесса.
С помощью Remote Process Explorer вы сможете увидеть полную информацию о каждом запущенном процессе, включая время начала процесса, пользователя, запустившего процесс, путь к его исполняемому файлу, а также потребляемый объем памяти и процессора.
Эта информация доступна в диспетчере задач и может быть получена как для локального, так и для удаленного компьютера. Для управления удаленным компьютером Remote Process Explorer имеет встроенные инструменты, которые он использует.
Ключевые особенности Remote Process Explorer:
- Мониторинг всех запущенных процессов на локальном и удаленном компьютере.
- Отображение параметров запущенных процессов (ID процесса, PID родителя, CPU, Memory Usage, Priority, Handles, Threads и многое другое) в режиме реального времени.
- Отображение дерева процессов.
- Завершение выбранного процесса в любое время.
- Изменение приоритета процесса на удаленном компьютере.
- Запуск новых процессов на удаленном компьютере.
- Выключение и перезагрузка удаленного компьютера.
- Поиск информации о выбранном процессе в Интернете.
- Мастер добавления компьютеров.
- Группы в списке компьютеров.
- Показ состояния компьютера в списке (включен/выключен).
- Автоматическое обновление списка компьютеров.
- Использование разных учетных записей для каждого компьютера.
- Дополнительные инструменты администрирования.
Для личного использования программа бесплатна, но требует регистрацию, которую можно пройти на сайте разработчика.
ТОП-сегодня раздела «Мониторинг»
SpeedFan 4.52
SpeedFan — бесплатный и удобный в использовании инструмент для контроля за температурой и…
MSI Afterburner 4.6.5
MSI Afterburner — настоящая находка для истинного оверклокера, с помощью которой можно…
Speccy 1.33.079
Speccy — небольшая бесплатная программа, позволяющая узнать массу полезной информации об…
HWMonitor 1.57
HWMonitor — бесплатная утилита для мониторинга параметров работы различных компонентов ПК,…
Quick CPU 4.10.0
Бесплатная, но очень мощная программа, разработанная для настройки и мониторинга…
Отзывы о программе Remote Process Explorer
Admin
Отзывов о программе Remote Process Explorer 21.04 пока нет, можете добавить…
Иногда возникает необходимость глянуть, какие программы запущены на удаленном компьютере. Вот пара простых способов из серии «сисадмину на заметку».
Конечно, все это будет работать, если у вас есть необходимые права на удаленном компе. Например это один из доменных ПК, а вы админ.
Первый и самый просто способ это команда tasklist. Набираем в командной строке tasklist /s имя_компа и получаем вот такой результат:
Что мы видим: файлы процессов, их PIDы, сессии и сколько памяти они жрут. Зная PID процесса, его можно грохнуть. Для этого существует прекрасная команда taskkill. Набираем taskkill /s имя_компа /PID номер_процесса и радуемся 🙂
И есть еще второй способ, не менее простой, но чуть-чуть более удобный. Называется Remote Process Viewer For Windows Networks. Тулза бесплатная, качайте тут. Кстати, на том сайте есть еще несколько маленьких и полезных бесплатных утилит. Установки не требует, показывает не просто файлы процессов, а полный путь до них — очень удобно.
PowerShell предоставляет широкие возможности управления процессами на локальном или удаленном компьютере. С помощью PowerShell можно получить список запущенных процессов, приостановить зависший процесс, найти процесс по заголовку окна, запустить новый процесс в скрытом или интерактивном режиме.
Список доступных командлетов управления процессами в Windows 10 можно вывести так:
Get-Command –Noun Process
- Get-Process – получить список запущенных процессов;
- Start-Process – запустить процесс/программу;
- Stop-Process – принудительно остановить процесс;
- Debug-Process – используется для отладки процессов;
- Wait-Process – используется для ожидания окончания процесса.
Содержание:
- Get-Process – получение списка запущенных процессов
- Start-Process, Stop-Process: запуск и остановка процессов из PowerShell
- PowerShell: управление процессами на удаленном компьютере
Get-Process – получение списка запущенных процессов
Командлет
Get-Process
позволяет вывести список запущенных процессов на локальном компьютере.
По-умолчанию выводятся следующие свойства запущенных процессов:
- Handles – количество дескрипторов ввода — вывода, которые отрыл данный процесс;
- NPM(K) — Non-paged memory (невыгружаемый пул). Размер данных процесса (в Кб.), которые никогда не попадают в файл подкачки на диск;
- PM(K) – размер памяти процесса, которая может быть выгружена на диск;
- WS(K) – размер физической памяти в Кб, используемой процессом (working set).
- CPU(s) – процессорное время, использованное процессом (учитывается время на всех CPU);
- ID — идентификатор процесса;
- SI (Session ID) – идентификатор сеанса процесса (0 — запущен для всех сессий, 1 – для первого залогиненого пользователя, 2 — для второго и т.д.);
- ProcessName – имя процесса.
Чтобы получить все свойства нескольких процессов:
Get-Process winword, notep* | Format-List *
Можно вывести только определенный свойства процессов. Например, имя (ProcessName) время запуска (StartTime), заголовок окна процесса (MainWindowTitle), имя исполняемого файла (Path) и наименование разработчика (Company):
Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft
Вывести список запущенных процессов пользователя с графическими окнами (в список не попадут фоновые и системные процессы):
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle
С помощью параметра
IncludeUserName
можно вывести имя пользователя (владельца), который запустил процесс:
Get-Process -Name winword -IncludeUserName
С помощью Where-Object можно выбрать процессы в соответствии с заданными критериями. Например, выведем все процессы, которые используются более 200 Мб оперативной памяти, отсортируем процессы в порядке убывания используемого объема RAM, размер памяти из Кб преобразуем в Мб:
Get-Process| where-object {$_.WorkingSet -GT 200000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending
Как мы уже говорили ранее командлет Get-Process в параметре CPU содержит время использования процессора конкретным процессом в секундах. Чтобы отобразить процент использования CPU процессами (по аналогии с Task Manager), используйте такую функцию:
function Get-CPUPercent
{
$CPUPercent = @{
Name = 'CPUPercent'
Expression = {
$TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
[Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
}
}
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
}
Get-CPUPercent
Чтобы найти зависшие процессы (которые не отвечают), выполните команду:
Get-Process | where-object {$_.Responding -eq $false}
Start-Process, Stop-Process: запуск и остановка процессов из PowerShell
Чтобы запустить новый процесс с помощью PowerShell используется команда:
Start-Process -FilePath notepad
Если каталог с исполняемым файлом отсутствует в переменной окружения $env:path, нужно указать полный путь к файлу:
Start-Process -FilePath 'C:\distr\app.exe'
Можно запустить программу и передать ей аргументы:
Start-Process -FilePath ping -ArgumentList "-n 10 192.168.1.11"
С помощью параметра WindowStyle вы можете задать режим запуска окна процесса (normal, minimized, maximized, hidden). Например, чтобы запустить программу в максимально развернуом окне и дождаться завершения процесса, выполните команду:
Start-Process -FilePath tracert -ArgumentList "192.168.1.11" –wait -windowstyle Maximized
С помощью командлета Stop-Process можно завершить любой процесс. Например, чтобы закрыть все запущенные процессы notepad:
Stop-Process -Name notepad
По-умолчанию не запрашивается подтверждение завершения процесса. Закрываются все процессы, которые соответствуют указанным критериям. Чтобы запросить подтверждение завершения для каждого процесса, добавьте –Confirm.
Stop-Process -Name notepad.exe -Confirm
Также завершить процесс можно так:
(Get-Process -Name notepad).Kill()
Из PowerShell можно принудительно завершить все приложения, которые не отвечают диспетчеру процессов Windows:
Get-Process | where-object {$_.Responding -eq $false}| Stop-Process
PowerShell: управление процессами на удаленном компьютере
С помощью аргумента ComputerName командлет Get-Process позволяет управлять процессами на удаленных компьютерах (должен быть включен и настроен WinRM).
Get-Process -ComputerName dc01, dc02| Format-Table -Property ProcessName, ID, MachineName
Мы рассматриваем встроенные возможности комнадлета Get-Process для управления процессами на удаленных компьютерах. Здесь не учитываются возможности PowerShell Remoting, которые доступны в командлетах Invoke-Command и Enter-PSSession.
Если вы хотите завершить процесс на удаленном компьютере, имейте в виду, что у командлета Stop-Process отсутствует параметр –ComputerName. Для завершения процесса на удаленном компьютере можно использовать такой PowerShell код:
$RProc = Get-Process -Name notepad -ComputerName dc01
Stop-Process -InputObject $RProc
Use the Windows built-in tasklist.exe to view all processes on a remote Windows computer on a network. This is exactly how the Windows Task manager would show processes (without the username running the process). You can also kill an active remote process using taskkill.exe. Follow the steps below.
- Open Windows command prompt as administrator (Right-click -> run as administrator).
- Type the following command replacing the values to view all remote tasks on a remote target machine.
tasklist.exe /S SYSTEM /U USERNAME /P PASSWORD
Note: SYSTEM is remote computer, USERNAME is the name of authorized account to login to remote computer, and PASSWORD is the password for the account.
- You will see output of all process names, process id’s, and memory usage on the remote machine.
- We will kill the cmd.exe process next using taskkill.exe. Type the following command replacing the value.
taskkill.exe /S SYSTEM /U USERNAE/P PASSWORD /IM PROCESS
Note: SYSTEM is remote computer, USERNAME is the name of authorized account to login to remote computer, PASSWORD is the password for the account, and /IM PROCESS is the full name of the process.
- You will see a confirmation message displayed: SUCCESS: The process “cmd.exe” with PID “” has been terminated.
A list of all TaskList.exe options:
/S system Specifies the remote system to connect to. /U [domain\]user Specifies the user context under which the command should execute. /P [password] Specifies the password for the given user context. Prompts for input if omitted. /M [module] Lists all tasks currently using the given exe/dll name. If the module name is not specified all loaded modules are displayed. /SVC Displays services hosted in each process. /V Displays verbose task information. /FI filter Displays a set of tasks that match a given criteria specified by the filter. /FO format Specifies the output format. Valid values: "TABLE", "LIST", "CSV". /NH Specifies that the "Column Header" should not be displayed in the output. Valid only for "TABLE" and "CSV" formats. /? Displays this help message.
A list of all TaskKill.exe options:
/S system Specifies the remote system to connect to. /U [domain\]user Specifies the user context under which the command should execute. /P [password] Specifies the password for the given user context. Prompts for input if omitted. /FI filter Applies a filter to select a set of tasks. Allows "*" to be used. ex. imagename eq acme* /PID processid Specifies the PID of the process to be terminated. Use TaskList to get the PID. /IM imagename Specifies the image name of the process to be terminated. Wildcard '*' used. /T Terminates the specified process and any child processes which were started by /F Specifies to forcefully terminate the process(es). /? Displays this help message.
* Please use the comment form below. Comments are moderated.*
A while back we talked about ways you can manage Windows services remotely. Today, we’ll show you seven ways you can “manage” Windows processes remotely in general. By manage we mean start, query, and kill a remote Windows process. Keep in mind pretty much all of these tools and techniques here assume you have appropriate permissions on the remote computer.
Starting processes remotely
1. PsExec, PowerShell, and WMI
We’ve already touched on ways you can start processes remotely using tools like PsExec, but with a little bit of scripting effort, you can also use tools like PowerShell’s Invoke-Command cmdlet or even a WMI query.
Query processes remotely
Without interactively connecting to a remote Windows computer you can easily query its current list of processes with a variety of tools.
2. tasklist
Since Windows XP there is a built-in command line utility named “tasklist“. By running the command “tasklist /s hostname” where “hostname” is the remote computer you want to query, it will return a list of processes on the remote machine and some basic details about each process (PID, session number, memory usage, etc.).
The tasklist command also allows you to specify different credentials on the command line if you need to authenticate to the remote computer with a different username and password. Just remember if you specify the password on the command line it will be visible to other administrators on the local computer who look at the local computer’s process list details.
In a command prompt run “tasklist /?” for more information about its usage.
3. PsList
Once again, if you’ve followed our articles for awhile, you know we’re big fans of the SysInternals PsTools suite. The PsList utility is another part of the PsTools suite. PsList is very similar to tasklist, but it gives you much more detailed information on threads (counts, states, context switches, etc.), CPU usage (user time, kernel time, etc.), and memory usage (private byes, working set, virtual memory, page faults, etc.).
PsList can also target a specific PID or process name (or name pattern). And one of my favorite features of PsList is the -t option to show you the process tree structure.
Much like the tasklist command, PsList also allows you to specify different credentials on the command line if you need to authenticate to the remote computer with a different username and password. Again, remember if you specify the password on the command line it will be visible to other administrators on the local computer who look at the local computer’s process list details.
After downloading PsList, in a command prompt run “pslist -?” for more information about its usage.
4. Scripting
And of course, if you want to go the scripting route, you can use things like PowerShell’s Get-Process cmdlet or again, even WMI queries to get details about remote Windows processes.
Killing processes remotely
Just like how you don’t need an interactive login to a remote Windows computer to get running process details, you don’t need an interactive login to terminate Windows processes on a remote computer either.
You obviously want to be very careful with these remote kill commands as you can pretty easily knock out an important service or process on the remote machine. Proceed with caution.
5. taskkill
The taskkill command is very similar to the tasklist command. You can specify a process name to kill by running a command like “taskkill /s hostname /IM notepad.exe” or one ore more PIDs with “taskkill /s hostname /PID 1234 /PID 5678”, where hostname is the name of the remote computer. The taskkill command also has a /t option to terminate an entire process tree (i.e. kill the process and any child processes it spawned).
Just like the tasklist command, taskkill also allows you to specify different credentials on the command line if you need to authenticate to the remote computer with a different username and password. Again, remember if you specify the password on the command line it will be visible to other administrators on the local computer who look at the local computer’s process list details.
In a command prompt run “taskkill /?” for more information about its usage.
6. PsKill
Just like how tasklist has the sister command taskkill, PsList has a sister command in PsKill. PsKill is also part of the SysInternals PsTools suite. PsKill is nearly identical to taskkill in that it will let you specify a process name or PID to kill, it has a -t option to terminate an entire process tree, and it allows you to specify different credentials on the command line. And just to drive it home… once again, remember if you specify the password on the command line it will be visible to other administrators on the local computer who look at the local computer’s process list details.
After downloading PsKill, in a command prompt run “pskill -?” for more information about its usage.
7. Scripting
Unfortunately PowerShell’s Stop-Process cmdlet doesn’t take a “-ComputerName” argument for remote execution, however you can workaround this by combining Stop-Process with Invoke-Command to remotely execute the cmdlet like:
Invoke-Command -ComputerName hostname {Stop-Process -name "notepad"}
And of course, good ol’ WMI provides a way for you to terminate a remote Windows process as well.
So as you can see, there are many tools and techniques – most built-in to Windows – that allow you to manage Windows processes remotely. Have fun with your processes!