Содержание
- Как получить подробные сведения о процессах в Windows 7
- Как узнать PID (идентификатор процесса) в Windows
- Как узнать PID (идентификатор процесса) в диспетчере задач
- Как узнать PID (идентификатор процесса) в командной строке
- Finding the process ID
- Task Manager
- The tasklist command
- TList utility
- The .tlist debugger command
- PowerShell Get-Process command
- CSRSS and user-mode drivers
- Как узнать какой порт использует программа
- Определения порта программы стандартными средствами Windows
- Поиск идентификатора процесса PID
- Поиск порта процесса
- Программы для просмотра сетевых соединений
- TCPView
- CurrPorts
- Поиск и сравнение процесса
- Решение
Как получить подробные сведения о процессах в Windows 7
В статье «Анализ использования памяти с помощью Монитора ресурсов Windows 7» я рассказывал, как использовать Монитор ресурсов (Resource Monitor) для анализа распределения памяти в Windows 7. При этом я упомянул, что графа «Образ» (Image) в таблице «Процессы» (Processes) на вкладке «Память» (Memory) позволяет идентифицировать процессы приложений по имени исполняемого файла. Например, процесс «notepad.exe» со всей очевидностью принадлежит Блокноту (Notepad).
Однако далеко не все процессы можно так легко опознать, и я получил уже немало вопросов от читателей по этому поводу. С идентификацией менее очевидных процессов поможет Диспетчер задач (Task Manager), и в этой статье я расскажу, как его использовать.
Запуск Диспетчера задач
Запустить Диспетчер задач в Windows 7 можно несколькими способами. Во-первых, можно нажать на панели задач правой кнопкой мыши и выбрать опцию «Запустить диспетчер задач» (Start Task Manager). Во-вторых, можно воспользоваться клавишной комбинацией [Ctrl]+[Shift]+[Esc]. И наконец в-третьих, можно запустить исполняемый файл Диспетчера задач из строки поиска меню «Пуск» (Start) — для этого введите taskmgr и нажмите [Enter]. В открывшемся окне выберите вкладку «Процессы» (Processes).
На вкладке «Процессы» есть графа «Описание» (Description, рис. A), в которой приводятся подробные сведения о каждом процессе.
Добавление столбцов на вкладке «Процессы»
Чтобы получить более подробные сведения о процессах Windows 7, воспользуйтесь командой «Выбрать столбцы» (Select Columns) в меню «Вид» (View). Появится диалоговое окно «Выбор столбцов страницы процессов» (Select Process Page Columns), показанное на рис. B. Отсюда можно добавить на вкладку «Процессы» дополнительные колонки — например, столбец «Путь к образу» (Image Path Name), в котором указывается полный путь к файлу, инициировавшему запущенный процесс Windows 7, или графу «Командная строка» (Command Line), где приводится полная команда для запуска процесса со всеми параметрами и переключателями.
Помимо этих столбцов, на вкладку «Процессы» можно добавить и многие другие. Всего в окне «Выбор столбцов страницы процессов» доступно более 30 опций, описание которых не входит в задачи данной статьи. Узнать о назначении всех колонок можно из справочной статьи «Что означают столбцы памяти Диспетчера задач?» на сайте Microsoft.
Опция «Открыть место хранения файла»
Помимо добавления на вкладку столбцов «Путь к образу» и «Командная строка», можно нажать на процессе правой кнопкой мыши и выбрать опцию «Открыть место хранения файла» (Open File Location). При этом откроется папка со всеми файлами, относящимися к данному процессу. К примеру, для процесса «hqtray.exe» на моем компьютере открывается папка «VMware Player» (рис. C).
Еще один источник информации о процессе Windows 7 — окно свойств, которое можно вызвать, нажав на процессе правой кнопкой мыши и выбрав опцию «Свойства» (Properties). Полезные сведения содержатся на вкладке «Подробно» (Details, рис. D).
Если вас интересует процесс «Svchost.exe», можно воспользоваться утилитой командной строки Tasklist, чтобы узнать о нем поподробнее. «Svchost.exe» — общее имя процесса для всех служб, запускаемых из динамически подключаемых библиотек (DLL). Чтобы узнать, каким службам принадлежит этот процесс, откройте командную строку (Command Prompt) и выполните следующую команду:
Вы получите список всех запущенных процессов, в котором приводятся сведения о службах для каждого процесса «Svchost.exe» (рис. E).
Узнав имена служб, запомните идентификатор (PID) процесса «Svchost.exe». Теперь откройте вкладку «Службы» (Services) в Диспетчере задач и отсортируйте список по столбцу «ИД процесса» (PID). Найдите нужный идентификатор и посмотрите описание, чтобы понять назначение службы Windows 7 (рис. F).
Сведения, к сожалению, весьма скудные, но хотя бы позволяют понять, какая именно служба запустила процесс «Svchost.exe».
А вам приходилось использовать Диспетчер задач для поиска информации о запущенных процессах Windows 7? Поделитесь своим опытом в комментариях!
Автор: Greg Shultz
Перевод SVET
Оцените статью: Голосов
Источник
Как узнать PID (идентификатор процесса) в Windows
В данной статье показаны действия, с помощью которых можно узнать PID (идентификатор процесса) в операционной системе Windows.
Идентификатор процесса (process identifier, PID) — уникальный номер процесса в операционной системе Windows.
Все процессы имеют уникальные идентификаторы PID, которые автоматически присваиваются каждому процессу когда он создается в операционной системе, что позволяет ядру системы различать процессы.
При необходимости можно узнать PID (идентификатор процесса).
Как узнать PID (идентификатор процесса) в диспетчере задач
Теперь найдите нужный процесс, и в столбце ИД процесса будет отображен идентификатор соответствующего процесса.
Как узнать PID (идентификатор процесса) в командной строке
Также узнать PID (идентификатор процесса) можно используя командную строку.
Запустите командную строку и выполните следующую команду:
Найдите нужный процесс, в столбце PID будет отображен идентификатор процесса.
Также можно отобразить процессы в виде списка, для этого в командной строке выполните следующую команду:
Найдите нужный процесс, в строке PID будет отображен идентификатор процесса.
Используя рассмотренные выше действия, можно узнать PID (идентификатор процесса) в операционной системе Windows.
Источник
Finding the process ID
Each process running in Windows is assigned a unique decimal number called the process ID (PID). This number is used in a number of ways, for example to specify the process when attaching a debugger to it.
This topic describes how you can determine the PID for a given app using Task Manager, the tasklist Windows command, the TList utility, or the debugger.
Task Manager
Task Manager can be opened in a number of ways, but the simplest is to select Ctrl+Alt+Delete, and then select Task Manager.
In Windows 10, first click More details to expand the information displayed. From the Processes tab, select the Details tab to see the process ID listed in the PID column.
Click on any column name to sort. You can right click a process name to see more options for a process.
Some kernel errors may cause delays in Task Manager’s graphical interface.
The tasklist command
Use the built in Windows tasklist command from a command prompt to display all processes, their PIDs, and a variety of other details.
Use tasklist /? to display command line help.
TList utility
Task List Viewer (TList), or tlist.exe, is a command-line utility that displays the list of tasks, or user-mode processes, currently running on the local computer. TList is included in the Debugging Tools for Windows. For information on how to download and install the debugging tools, see Download Debugging Tools for Windows.
If you installed the Windows Driver Kit in the default directory on a 64 bit PC, the debugging tools are located here:
C:Program Files (x86)Windows Kits10Debuggersx64
When you run TList from the command prompt, it will display a list of all the user-mode processes in memory with a unique PID number. For each process, it shows the PID, process name, and, if the process has a window, the title of that window.
For more information, see TList.
The .tlist debugger command
If there’s already a user-mode debugger running on the system in question, the .tlist (List Process IDs) command will display a list of all PIDs on that system.
PowerShell Get-Process command
To work with automation scripts, use the Get-Process PowerShell command. Specify a specific process name, to see the process ID for that process.
For more information, see Get-Process.
CSRSS and user-mode drivers
To debug a user-mode driver running on another computer, debug the Client Server Run-Time Subsystem (CSRSS) process. For more information, see Debugging CSRSS.
Источник
Как узнать какой порт использует программа
На компьютере может быть установлено довольно много программ и все они резервируют в операционной системе определенный порт для взаимодействия с другим программным обеспечением по сети. В большинстве случаев пользователь заранее знает какой порт использует программа. Это может быть официально зарезервированный порт, под определенный сетевой протокол. Например почтовые программы используют для приема почты протокол POP3 и резервируют порт 110. Бывают неофициально резервируемые порты, например порт 1540 используемый агентом сервера 1С:Предприятие. Информацию об используемых неофициальных портах разработчики программного обеспечения указывают в документации.
Определения порта программы стандартными средствами Windows
Поиск идентификатора процесса PID
1. Открываем командную строку: сочетание клавиш и вводим команду CMD.
2. Запускаем tasklist и находим PID процесса.
Если необходимо отобразить полный список процессов, в том числе служебных и системных, необходимо использовать tasklist без аргументов.
Команда tasklist /fi «status eq running» найдет только те процессы, которые были запущенны программами. Это сократит список процессов и облегчит поиск.
Находим в списке нужную программу, например OneDrive.exe и запоминаем соответствующий PID.
Поиск порта процесса
Для получения списка используемых портов воспользуемся утилитой командной строки netstat.
B netstat были использованы слtдующие аргументы:
В результате будет получен довольно крупный список активных сетевых соединений, среди которых необходимо найти соединение с нужным PID.
В найденных результатах видно, что процесс c PID 15304 (программа OneDrive.exe) использует несколько сетевых портов: 11906, 11907, 11908.
Обращайте внимание на то, для какого траспортного протокола открыт порт: ТСР или UDP. Это информация будет важна, когда будете пробрасывать порт через межсетевой экран.
Программы для просмотра сетевых соединений
Этот способ подойдет для тех, кто не хочет погружаться в работу утилит командной строки Windows, а желает быстро и просто получить информацию о портах, которые использует программа, в графическом интерфейсе.
TCPView
CurrPorts
Из плюсов программы следует отметить наличие русского языка. Чтобы русифицировать программу нужно скачать отдельный файл русификации и положить его в папку с программой.
Источник
Поиск и сравнение процесса
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Поиск процесса на c++
ПОМОГИТЕ ПЛИЗ. Программирую на с++ builder 6. Задача: 1-е проверить наличие процесса.
Поиск процесса по имени
Такой вопрос: я ввожу с клавиатуры имя процесса и можно ли проверить, запущен ли процесс с таким.
Поиск процесса по имени
Помогите написать программу поиска процесса по имени на MS Visual Studio 2010.
Добавлено через 1 час 0 минут
Модифицированный вариант с поиском файла в произвольной папке и обработкой каждого найденного PID для найденного имени файлапроцесса:
Решение
Добавлено через 5 минут
что-то типа
чтобы точнее, надо поизучать help по wmic process
Добавлено через 1 минуту
под XP wmic работает,
a ежели чо, проверить наличие SP3.
Добавлено через 4 часа 6 минут
ну вот, появился у меня windows под рукой, поэтому,
чтобы перезапустить процесс, зная его исполняемый путь
doit.bat:
Поиск окон процесса
Привет, подскажите пожалуйста какие функции надо использовать в моем случае, никак не могу найти.
Поиск процесса по имени
Здравствуйте, помогите пожалуйста перевести с Lua код поиск процесса по имени, на язык.
Поиск процесса по имени
Нужно написать функцию которая будет искать запущен ли процесс (имя процесса за ранние известно).
поиск скрытого процесса.
у меня в системе завёлся скрытый процесс я знаю только имя файла «000.exe» мне надо на нулевом.
Источник
Каждая программа, запущенная на сервере, способна создавать один или несколько процессов. На одном сервере может быть несколько пользователей, которые выполняют множество команд, создающих процессы. Эти процессы могут работать как на переднем плане, так и в фоновом режиме. Если программа запущена на переднем плане, она может занять терминал, где программа была первоначально запущена, и другие приложения не могут быть запущены, пока другие процессы не запущены на переднем плане.
В то время как другие процессы могут работать и в фоновом режиме, в этом случае терминал, в котором мы начали запускать нашу программу, может добавлять новые команды, пока программа все еще запущена. Демоны также являются одним из типов процессов, которые выполняются непрерывно. Они прослушивают запросы на определенных портах. Обычно они инициализируются при запуске системы и просто ждут в фоновом режиме, пока их услуги не понадобятся.
Иногда во время работы наша система становится невосприимчивой, процесс может занимать много системного пространства и даже остановиться. Поэтому нам нужно найти и завершить такой процесс в Linux, чтобы продолжить работу. Существует много способов завершить (убить) процесс в Linux, которые будут рассмотрены в этом руководстве. Процесс может быть убит принудительно с помощью этих команд.
При написании этой статьи я использовал Ubuntu. Однако команды могут работать в любом дистрибутиве Linux.
Содержание
- Определение местоположения процесса Linux
- Завершение процесса по идентификатору
- Как проверить, был ли процесс завершен или нет?
- Завершение процесса по имени
- Заключение
Определение местоположения процесса Linux
Шаг 1: Прежде всего, откройте Terminal, нажав на пусковую установку Ubuntu и выполнив поиск Terminal.
Шаг 2: Теперь нажмите на Терминал и подождите, пока он откроется.
Шаг 3: Как только терминал откроется, у вас появится вот такой экран:
В последующих шагах важны следующие два ключа:
PID – это идентификатор процесса. Каждый процесс имеет определенный 5-значный номер, присвоенный самому процессу. Эти номера могут повторяться, когда они достигают максимального предела, но они всегда уникальны для процесса в системе.
Шаг 4: команда top- используется в качестве основной команды для просмотра всех запущенных процессов, использующих ресурсы компьютерного устройства. Итак, мы выполняем команду top- в терминале и получаем следующие результаты
Команда top сама по себе является приложением. Оно может использоваться для отображения списка всех процессов и имеет новое оформление при выполнении. Вот пример,
- h – используется для отображения окна справки. В окне справки есть все команды, они предоставляют информацию, которая весьма полезна.
- пробел – При нажатии пробела мы получим немедленное обновление таблицы процессов. Нам не придется ждать никакого временного интервала.
- f – добавление файлов для отображения в макете или удаление для удаления определенных полей, чтобы они не отображались.
- q – используется для выхода из верхнего приложения, а также для дополнительно открытого окна.
- l – используется для переключения отображения информации о средней нагрузке и времени работы.
- m – служит для переключения отображения информации о памяти.
- P (Shift + p) – используется для сортировки процессов по использованию процессора.s – используется для изменения задержки между обновлениями.
Шаг 5: Для просмотра списка всех запущенных процессов есть еще одна команда
Появится список всех запущенных в данный момент процессов. Этот процесс показывает все запущенные процессы, которые имеют свои PID “идентификаторы процессов”. Вы можете просмотреть этот список, чтобы найти имя процесса, которое также соответствует программе, которую вы хотите убить. В конце списка отображаются программы, запущенные в последнее время, которые вы хотите завершить из списка.
Когда вы закончите, нажмите “q”, чтобы выйти из этого окна.
Завершение процесса по идентификатору
Получив PID, мы можем использовать команду kill, чтобы завершить процесс на основе информации, полученной от команды ps -A.
Шаг 1: Для этого мы используем команду “sudo kill PID”. Где PID – это идентификатор процесса, который мы хотим завершить.
Если мы хотим завершить определенный процесс, мы видим его соответствующий PID, а затем используем его, чтобы завершить запущенный процесс. Например, мы хотим завершить процесс “firefox”, поэтому сначала находим его PID.
Итак, здесь PID firefox равен 16562. Мы используем команду “sudo kill PID”, чтобы завершить процесс Firefox.
Как проверить, был ли процесс завершен или нет?
Затем мы проверяем все запущенные процессы после того, как убьем интересующий нас процесс, используя команду “ps -A | less”. Результат показывает, что в списке нет процесса firefox (PID: 16562).
Завершение процесса по имени
Убийство программы по имени ее процесса работает только для всех исполняемых файлов (т.е. всех запускаемых программ), которые должны быть открыты на момент выполнения. Все те программы, которые выполняются в фоновом режиме, не могут быть убиты по имени процесса.
Сейчас мы убьем интересующий нас процесс, используя его имя. Если мы хотим завершить конкретный процесс, мы видим его соответствующий PID и затем используем его для убийства запущенного процесса. Например, мы хотим завершить процесс “firefox”, поэтому сначала находим его PID. Завершить процесс Linux по имени
Итак, здесь имя процесса – firefox, и мы используем команду “pkill firefox” для завершения этого процесса.
Затем мы проверим все запущенные процессы после того, как убьем интересующий нас процесс, используя команду “ps -A | less”. Результат показывает, что в списке нет процесса firefox.
Заключение
Спасибо, что прочитали эту статью. Мы рассмотрели, как можно найти и затем завершить процесс, используя его ID или имя.
Get-Process
SYNOPSIS
Gets the processes that are running on the local computer or a remote computer.
SYNTAX
Name (Default)
Код: Выделить всё
Get-Process [[-Name] <String[]>] [-ComputerName <String[]>] [-Module] [-FileVersionInfo] [<CommonParameters>]
NameWithUserName
Код: Выделить всё
Get-Process [[-Name] <String[]>] [-IncludeUserName] [<CommonParameters>]
IdWithUserName
Код: Выделить всё
Get-Process -Id <Int32[]> [-IncludeUserName] [<CommonParameters>]
Id
Код: Выделить всё
Get-Process -Id <Int32[]> [-ComputerName <String[]>] [-Module] [-FileVersionInfo] [<CommonParameters>]
InputObjectWithUserName
Код: Выделить всё
Get-Process -InputObject <Process[]> [-IncludeUserName] [<CommonParameters>]
InputObject
Код: Выделить всё
Get-Process -InputObject <Process[]> [-ComputerName <String[]>] [-Module] [-FileVersionInfo]
[<CommonParameters>]
DESCRIPTION
The Get-Process
cmdlet gets the processes on a local or remote computer.
Without parameters, this cmdlet gets all of the processes on the local computer. You can also
specify a particular process by process name or process ID (PID) or pass a process object through
the pipeline to this cmdlet.
By default, this cmdlet returns a process object that has detailed information about the process and
supports methods that let you start and stop the process. You can also use the parameters of the
Get-Process
cmdlet to get file version information for the program that runs in the process and to
get the modules that the process loaded.
EXAMPLES
Example 1: Get a list of all active processes on the local computer
This command gets a list of all active processes running on the local computer. For a definition of
each column, see the Notes section.
Example 2: Get all available data about one or more processes
Код: Выделить всё
Get-Process winword, explorer | Format-List *
This command gets all available data about the Winword and Explorer processes on the computer. It
uses the Name parameter to specify the processes, but it omits the optional parameter name. The
pipeline operator |
passes the data to the Format-List
cmdlet, which displays all available
properties *
of the Winword and Explorer process objects.
You can also identify the processes by their process IDs. For instance, Get-Process -Id 664, 2060
.
Example 3: Get all processes with a working set greater than a specified size
Код: Выделить всё
Get-Process | Where-Object {$_.WorkingSet -gt 20000000}
This command gets all processes that have a working set greater than 20 MB. It uses the
Get-Process
cmdlet to get all running processes. The pipeline operator |
passes the process
objects to the Where-Object
cmdlet, which selects only the object with a value greater than
20,000,000 bytes for the WorkingSet property.
WorkingSet is one of many properties of process objects. To see all of the properties, type
Get-Process | Get-Member
. By default, the values of all amount properties are in bytes, even
though the default display lists them in kilobytes and megabytes.
Example 4: List processes on the computer in groups based on priority
Код: Выделить всё
$A = Get-Process
$A | Get-Process | Format-Table -View priority
These commands list the processes on the computer in groups based on their priority class. The first
command gets all the processes on the computer and then stores them in the $A
variable.
The second command pipes the Process object stored in the $A
variable to the Get-Process
cmdlet, then to the Format-Table
cmdlet, which formats the processes by using the Priority
view.
The Priority view, and other views, are defined in the PS1XML format files in the PowerShell
home directory ($pshome
).
Example 5: Add a property to the standard Get-Process output display
Код: Выделить всё
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
This example retrieves processes from the local computer and a remote computer (S1). The retrieved
processes are piped to the Format-Table
command that adds the MachineName property to the
standard Get-Process
output display.
Example 6: Get version information for a process
Код: Выделить всё
ProductVersion FileVersion FileName
-------------- ----------- --------
6.1.6713.1 6.1.6713.1 (f... C:WINDOWSsystem32WindowsPowerShellv1.0powershell.exe
This command uses the FileVersionInfo parameter to get the version information for the
powershell.exe file that is the main module for the PowerShell process.
To run this command with processes that you do not own on Windows Vista and later versions of
Windows, you must open PowerShell with the Run as administrator option.
Example 7: Get modules loaded with the specified process
This command uses the Module parameter to get the modules that have been loaded by the process.
This command gets the modules for the processes that have names that begin with SQL.
To run this command on Windows Vista and later versions of Windows with processes that you do not
own, you must start PowerShell with the Run as administrator option.
Example 8: Find the owner of a process
Код: Выделить всё
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
782 132080 2.08 2188 DOMAIN01user01 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
The first command shows how to find the owner of a process. The IncludeUserName parameter
requires elevated user rights (Run as Administrator). The output reveals that the owner is
Domain01user01.
The second and third command are another way to find the owner of a process.
The second command uses Get-WmiObject
to get the PowerShell process.
It saves it in the $p
variable.
The third command uses the GetOwner method to get the owner of the process in $p
. The output
reveals that the owner is Domain01user01.
Example 9: Use an automatic variable to identify the process hosting the current session
Код: Выделить всё
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
Код: Выделить всё
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
396 26 56488 57236 575 3.90 5888 powershell
These commands show how to use the $PID
automatic variable to identify the process that is hosting
the current PowerShell session. You can use this method to distinguish the host process from other
PowerShell processes that you might want to stop or close.
The first command gets all of the PowerShell processes in the current session.
The second command gets the PowerShell process that is hosting the current session.
Example 10: Get all processes that have a main window title and display them in a table
Код: Выделить всё
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize
This command gets all the processes that have a main window title, and it displays them in a table
with the process ID and the process name.
The mainWindowTitle property is just one of many useful properties of the Process object
that Get-Process
returns. To view all of the properties, pipe the results of a Get-Process
command to the Get-Member
cmdlet Get-Process | Get-Member
.
PARAMETERS
-ComputerName
Specifies the computers for which this cmdlet gets active processes. The default is the local
computer.
Type the NetBIOS name, an IP address, or a fully qualified domain name (FQDN) of one or more
computers. To specify the local computer, type the computer name, a dot (.), or localhost.
This parameter does not rely on Windows PowerShell remoting. You can use the ComputerName
parameter of this cmdlet even if your computer is not configured to run remote commands.
Код: Выделить всё
Type: System.String[]
Parameter Sets: Name, Id, InputObject
Aliases: Cn
Required: False
Position: Named
Default value: Local computer
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-FileVersionInfo
Indicates that this cmdlet gets the file version information for the program that runs in the
process.
On Windows Vista and later versions of Windows, you must open PowerShell with the Run as
administrator option to use this parameter on processes that you do not own.
You cannot use the FileVersionInfo and ComputerName parameters of the Get-Process
cmdlet in the same command.
To get file version information for a process on a remote computer, use the Invoke-Command
cmdlet.
Using this parameter is equivalent to getting the MainModule.FileVersionInfo property of each
process object. When you use this parameter, Get-Process
returns a FileVersionInfo object
System.Diagnostics.FileVersionInfo, not a process object. So, you cannot pipe the output of the
command to a cmdlet that expects a process object, such as Stop-Process
.
Код: Выделить всё
Type: System.Management.Automation.SwitchParameter
Parameter Sets: Name, Id, InputObject
Aliases: FV, FVI
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Id
Specifies one or more processes by process ID (PID). To specify multiple IDs, use commas to separate
the IDs. To find the PID of a process, type Get-Process
.
Код: Выделить всё
Type: System.Int32[]
Parameter Sets: IdWithUserName, Id
Aliases: PID
Required: True
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
-IncludeUserName
Indicates that the UserName value of the Process object is returned with results of the command.
Код: Выделить всё
Type: System.Management.Automation.SwitchParameter
Parameter Sets: NameWithUserName, IdWithUserName, InputObjectWithUserName
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-InputObject
Specifies one or more process objects. Enter a variable that contains the objects, or type a command
or expression that gets the objects.
Код: Выделить всё
Type: System.Diagnostics.Process[]
Parameter Sets: InputObjectWithUserName, InputObject
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
-Module
Indicates that this cmdlet gets the modules that have been loaded by the processes.
On Windows Vista and later versions of Windows, you must open PowerShell with the Run as
administrator option to use this parameter on processes that you do not own.
To get the modules that have been loaded by a process on a remote computer, use the Invoke-Command
cmdlet.
This parameter is equivalent to getting the Modules property of each process object. When you
use this parameter, this cmdlet returns a ProcessModule object
System.Diagnostics.ProcessModule, not a process object. So, you cannot pipe the output of the
command to a cmdlet that expects a process object, such as Stop-Process
.
When you use both the Module and FileVersionInfo parameters in the same command, this cmdlet
returns a FileVersionInfo object with information about the file version of all modules.
Код: Выделить всё
Type: System.Management.Automation.SwitchParameter
Parameter Sets: Name, Id, InputObject
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Name
Specifies one or more processes by process name. You can type multiple process names (separated by
commas) and use wildcard characters. The parameter name (“Name”) is optional.
Код: Выделить всё
Type: System.String[]
Parameter Sets: Name, NameWithUserName
Aliases: ProcessName
Required: False
Position: 0
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: True
CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
-InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose,
-WarningAction, and -WarningVariable.
INPUTS
System.Diagnostics.Process
You can pipe a process object to this cmdlet.
OUTPUTS
System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Diagnostics.ProcessModule
By default, this cmdlet returns a System.Diagnostics.Process object. If you use the
FileVersionInfo parameter, it returns a System.Diagnostics.FileVersionInfo object. If you
use the Module parameter, without the FileVersionInfo parameter, it returns a
System.Diagnostics.ProcessModule object.
NOTES
- You can also refer to this cmdlet by its built-in aliases, ps and gps.
- On computers that are running a 64-bit version of Windows, the 64-bit version of PowerShell gets
only 64-bit process modules and the 32-bit version of PowerShell gets only 32-bit process modules. - You can use the properties and methods of the Windows Management Instrumentation (WMI)
Win32_Process object in PowerShell. For information, seeGet-WmiObject
and the WMI SDK. - The default display of a process is a table that includes the following columns.
- Handles: The number of handles that the process has opened.
- NPM(K): The amount of non-paged memory that the process is using, in kilobytes.
- PM(K): The amount of pageable memory that the process is using, in kilobytes.
- WS(K): The size of the working set of the process, in kilobytes.
The working set consists of the pages of memory that were recently referenced by the process. - VM(M): The amount of virtual memory that the process is using, in megabytes.
Virtual memory includes storage in the paging files on disk. - CPU(s): The amount of processor time that the process has used on all processors, in seconds.
- ID: The process ID (PID) of the process.
- ProcessName: The name of the process. For explanations of the concepts related to processes, see
the Glossary in Help and Support Center and the Help for Task Manager.
- You can also use the built-in alternate views of the processes available with
Format-Table
, such
as StartTime and Priority, and you can design your own views.
I have two processes running (foo.cmd and bar.cmd on Windows7 prof), which both check frequently if the other process is still running.
Since each process knows the PID of the other process in the variable %FPID%
, I used to check if the other process is still running like this
FOR /F "tokens=1,*" %%a in ('tasklist /FI "PID eq %FPID%" /NH ^| find /C "%FPID%"') do set COUNTP=%%a
If %COUNTP%
was now bigger than 0, the other process was still running.
But every now and then %COUNTP%
was equals 0 even if the other process was actually still running (It still wrote into logfiles).
A second later it could be found again.
- Which circumstances could lead to not find a running process by its ID like I do with the statement above?
- Is there a better/nicer/faster way to check if a process for a certain PID is still active and running (on windows)?
asked Dec 16, 2013 at 14:54
4
Off the top of my head, I am looking at the __InstanceDeletionEvent class for a WMI event watcher. If you choose that route, this snip will get you in the right direction, courtesy the WMI Code Creator.
Basically WMI will wait and detect when the $pid closes, and execute commands within 1 second of that happening.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootCIMV2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance.ProcessId = 1900")
Wscript.Echo "Waiting for events ..."
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
'report an event
Wscript.Echo "__InstanceDeletionEvent event has occurred."
Loop
answered Dec 16, 2013 at 15:53
Knuckle-DraggerKnuckle-Dragger
6,5544 gold badges25 silver badges41 bronze badges
Однако далеко не все процессы можно так легко опознать, и я получил уже немало вопросов от читателей по этому поводу. С идентификацией менее очевидных процессов поможет Диспетчер задач (Task Manager), и в этой статье я расскажу, как его использовать.
Запуск Диспетчера задач
Запустить Диспетчер задач в Windows 7 можно несколькими способами. Во-первых, можно нажать на панели задач правой кнопкой мыши и выбрать опцию «Запустить диспетчер задач» (Start Task Manager). Во-вторых, можно воспользоваться клавишной комбинацией [Ctrl]+[Shift]+[Esc]. И наконец в-третьих, можно запустить исполняемый файл Диспетчера задач из строки поиска меню «Пуск» (Start) — для этого введите taskmgr и нажмите [Enter]. В открывшемся окне выберите вкладку «Процессы» (Processes).
Графа «Описание»
На вкладке «Процессы» есть графа «Описание» (Description, рис. A), в которой приводятся подробные сведения о каждом процессе.
Рисунок A. Информация в графе «Описание» помогает идентифицировать процесс.
Добавление столбцов на вкладке «Процессы»
Чтобы получить более подробные сведения о процессах Windows 7, воспользуйтесь командой «Выбрать столбцы» (Select Columns) в меню «Вид» (View). Появится диалоговое окно «Выбор столбцов страницы процессов» (Select Process Page Columns), показанное на рис. B. Отсюда можно добавить на вкладку «Процессы» дополнительные колонки — например, столбец «Путь к образу» (Image Path Name), в котором указывается полный путь к файлу, инициировавшему запущенный процесс Windows 7, или графу «Командная строка» (Command Line), где приводится полная команда для запуска процесса со всеми параметрами и переключателями.
Рисунок B. Добавив на вкладку «Процессы» столбцы «Путь к образу» и «Командная строка», можно получить еще более подробные сведения о процессах Windows 7.
Помимо этих столбцов, на вкладку «Процессы» можно добавить и многие другие. Всего в окне «Выбор столбцов страницы процессов» доступно более 30 опций, описание которых не входит в задачи данной статьи. Узнать о назначении всех колонок можно из справочной статьи «Что означают столбцы памяти Диспетчера задач?» на сайте Microsoft.
Опция «Открыть место хранения файла»
Помимо добавления на вкладку столбцов «Путь к образу» и «Командная строка», можно нажать на процессе правой кнопкой мыши и выбрать опцию «Открыть место хранения файла» (Open File Location). При этом откроется папка со всеми файлами, относящимися к данному процессу. К примеру, для процесса «hqtray.exe» на моем компьютере открывается папка «VMware Player» (рис. C).
Рисунок C. Команда «Открыть место хранения файла» открывает папку со всеми файлами процесса.
Свойства процесса
Еще один источник информации о процессе Windows 7 — окно свойств, которое можно вызвать, нажав на процессе правой кнопкой мыши и выбрав опцию «Свойства» (Properties). Полезные сведения содержатся на вкладке «Подробно» (Details, рис. D).
Рисунок D. В окне свойств содержится подробная информация о процессе.
Утилита Tasklist
Если вас интересует процесс «Svchost.exe», можно воспользоваться утилитой командной строки Tasklist, чтобы узнать о нем поподробнее. «Svchost.exe» — общее имя процесса для всех служб, запускаемых из динамически подключаемых библиотек (DLL). Чтобы узнать, каким службам принадлежит этот процесс, откройте командную строку (Command Prompt) и выполните следующую команду:
Tasklist /svc /fo list
Вы получите список всех запущенных процессов, в котором приводятся сведения о службах для каждого процесса «Svchost.exe» (рис. E).
Рисунок E. Команда Tasklist позволяет узнать, каким службам принадлежит процесс «Svchost.exe».
Узнав имена служб, запомните идентификатор (PID) процесса «Svchost.exe». Теперь откройте вкладку «Службы» (Services) в Диспетчере задач и отсортируйте список по столбцу «ИД процесса» (PID). Найдите нужный идентификатор и посмотрите описание, чтобы понять назначение службы Windows 7 (рис. F).
Рисунок F. С помощью идентификатора процесса можно найти описание службы на вкладке «Службы».
Сведения, к сожалению, весьма скудные, но хотя бы позволяют понять, какая именно служба запустила процесс «Svchost.exe».
А что думаете вы?
А вам приходилось использовать Диспетчер задач для поиска информации о запущенных процессах Windows 7? Поделитесь своим опытом в комментариях!
Автор: Greg Shultz
Перевод
SVET
Оцените статью: Голосов