Как найти процесс по идентификатору

Содержание

  1. Как получить подробные сведения о процессах в Windows 7
  2. Как узнать PID (идентификатор процесса) в Windows
  3. Как узнать PID (идентификатор процесса) в диспетчере задач
  4. Как узнать PID (идентификатор процесса) в командной строке
  5. Finding the process ID
  6. Task Manager
  7. The tasklist command
  8. TList utility
  9. The .tlist debugger command
  10. PowerShell Get-Process command
  11. CSRSS and user-mode drivers
  12. Как узнать какой порт использует программа
  13. Определения порта программы стандартными средствами Windows
  14. Поиск идентификатора процесса PID
  15. Поиск порта процесса
  16. Программы для просмотра сетевых соединений
  17. TCPView
  18. CurrPorts
  19. Поиск и сравнение процесса
  20. Решение

Как получить подробные сведения о процессах в 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

1555418414 get pid process id in windows 1

В данной статье показаны действия, с помощью которых можно узнать PID (идентификатор процесса) в операционной системе Windows.

Идентификатор процесса (process identifier, PID) — уникальный номер процесса в операционной системе Windows.

Все процессы имеют уникальные идентификаторы PID, которые автоматически присваиваются каждому процессу когда он создается в операционной системе, что позволяет ядру системы различать процессы.

При необходимости можно узнать PID (идентификатор процесса).

Как узнать PID (идентификатор процесса) в диспетчере задач

1555418439 get pid process id in windows 2

Теперь найдите нужный процесс, и в столбце ИД процесса будет отображен идентификатор соответствующего процесса.

1555418480 get pid process id in windows 3

Как узнать PID (идентификатор процесса) в командной строке

Также узнать PID (идентификатор процесса) можно используя командную строку.

Запустите командную строку и выполните следующую команду:

Найдите нужный процесс, в столбце PID будет отображен идентификатор процесса.

1555418490 get pid process id in windows 4

Также можно отобразить процессы в виде списка, для этого в командной строке выполните следующую команду:

Найдите нужный процесс, в строке PID будет отображен идентификатор процесса.

1555418402 get pid process id in windows 5

Используя рассмотренные выше действия, можно узнать 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.

process id task manager windows 10

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.

image 21

2. Запускаем tasklist и находим PID процесса.

Если необходимо отобразить полный список процессов, в том числе служебных и системных, необходимо использовать tasklist без аргументов.

Команда tasklist /fi «status eq running» найдет только те процессы, которые были запущенны программами. Это сократит список процессов и облегчит поиск.

Находим в списке нужную программу, например OneDrive.exe и запоминаем соответствующий PID.

image 23

Поиск порта процесса

Для получения списка используемых портов воспользуемся утилитой командной строки netstat.

B netstat были использованы слtдующие аргументы:

В результате будет получен довольно крупный список активных сетевых соединений, среди которых необходимо найти соединение с нужным PID.

image 25

image 29

В найденных результатах видно, что процесс c PID 15304 (программа OneDrive.exe) использует несколько сетевых портов: 11906, 11907, 11908.

Обращайте внимание на то, для какого траспортного протокола открыт порт: ТСР или UDP. Это информация будет важна, когда будете пробрасывать порт через межсетевой экран.

Программы для просмотра сетевых соединений

Этот способ подойдет для тех, кто не хочет погружаться в работу утилит командной строки Windows, а желает быстро и просто получить информацию о портах, которые использует программа, в графическом интерфейсе.

TCPView

image 31

CurrPorts

Из плюсов программы следует отметить наличие русского языка. Чтобы русифицировать программу нужно скачать отдельный файл русификации и положить его в папку с программой.

image 36

Источник

Поиск и сравнение процесса

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Поиск процесса на 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:

tickПоиск окон процесса
Привет, подскажите пожалуйста какие функции надо использовать в моем случае, никак не могу найти.

tickПоиск процесса по имени
Здравствуйте, помогите пожалуйста перевести с Lua код поиск процесса по имени, на язык.

Поиск процесса по имени
Нужно написать функцию которая будет искать запущен ли процесс (имя процесса за ранние известно).

поиск скрытого процесса.
у меня в системе завёлся скрытый процесс я знаю только имя файла «000.exe» мне надо на нулевом.

Источник

Каждая программа, запущенная на сервере, способна создавать один или несколько процессов. На одном сервере может быть несколько пользователей, которые выполняют множество команд, создающих процессы. Эти процессы могут работать как на переднем плане, так и в фоновом режиме. Если программа запущена на переднем плане, она может занять терминал, где программа была первоначально запущена, и другие приложения не могут быть запущены, пока другие процессы не запущены на переднем плане.

В то время как другие процессы могут работать и в фоновом режиме, в этом случае терминал, в котором мы начали запускать нашу программу, может добавлять новые команды, пока программа все еще запущена. Демоны также являются одним из типов процессов, которые выполняются непрерывно. Они прослушивают запросы на определенных портах. Обычно они инициализируются при запуске системы и просто ждут в фоновом режиме, пока их услуги не понадобятся.

Иногда во время работы наша система становится невосприимчивой, процесс может занимать много системного пространства и даже остановиться. Поэтому нам нужно найти и завершить такой процесс в Linux, чтобы продолжить работу. Существует много способов завершить (убить) процесс в Linux, которые будут рассмотрены в этом руководстве. Процесс может быть убит принудительно с помощью этих команд.

При написании этой статьи я использовал Ubuntu. Однако команды могут работать в любом дистрибутиве Linux.

Содержание

  1. Определение местоположения процесса Linux
  2. Завершение процесса по идентификатору
  3. Как проверить, был ли процесс завершен или нет?
  4. Завершение процесса по имени
  5. Заключение

Определение местоположения процесса Linux

Шаг 1: Прежде всего, откройте Terminal, нажав на пусковую установку Ubuntu и выполнив поиск Terminal.

Открытие терминала

Шаг 2: Теперь нажмите на Терминал и подождите, пока он откроется.

Шаг 3: Как только терминал откроется, у вас появится вот такой экран:

Командная строка терминала

В последующих шагах важны следующие два ключа:

PID – это идентификатор процесса. Каждый процесс имеет определенный 5-значный номер, присвоенный самому процессу. Эти номера могут повторяться, когда они достигают максимального предела, но они всегда уникальны для процесса в системе.

Шаг 4: команда top- используется в качестве основной команды для просмотра всех запущенных процессов, использующих ресурсы компьютерного устройства. Итак, мы выполняем команду top- в терминале и получаем следующие результаты

Использование команды Linux top для поиска процесса

Команда top сама по себе является приложением. Оно может использоваться для отображения списка всех процессов и имеет новое оформление при выполнении. Вот пример,

  • h – используется для отображения окна справки. В окне справки есть все команды, они предоставляют информацию, которая весьма полезна.
  • пробел – При нажатии пробела мы получим немедленное обновление таблицы процессов. Нам не придется ждать никакого временного интервала.
  • f – добавление файлов для отображения в макете или удаление для удаления определенных полей, чтобы они не отображались.
  • q – используется для выхода из верхнего приложения, а также для дополнительно открытого окна.
  • l – используется для переключения отображения информации о средней нагрузке и времени работы.
  • m – служит для переключения отображения информации о памяти.
  • P (Shift + p) – используется для сортировки процессов по использованию процессора.s – используется для изменения задержки между обновлениями.

Шаг 5: Для просмотра списка всех запущенных процессов есть еще одна команда

Команда ps в Linux

Появится список всех запущенных в данный момент процессов. Этот процесс показывает все запущенные процессы, которые имеют свои 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, see Get-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

    Preexo's user avatar

    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-Dragger's user avatar

    Knuckle-DraggerKnuckle-Dragger

    6,5544 gold badges25 silver badges41 bronze badges

    В статье «Анализ использования памяти с помощью Монитора ресурсов 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

    Рисунок A. Информация в графе «Описание» помогает идентифицировать процесс.

    Добавление столбцов на вкладке «Процессы»

    Чтобы получить более подробные сведения о процессах Windows 7, воспользуйтесь командой «Выбрать столбцы» (Select Columns) в меню «Вид» (View). Появится диалоговое окно «Выбор столбцов страницы процессов» (Select Process Page Columns), показанное на рис. B. Отсюда можно добавить на вкладку «Процессы» дополнительные колонки — например, столбец «Путь к образу» (Image Path Name), в котором указывается полный путь к файлу, инициировавшему запущенный процесс Windows 7, или графу «Командная строка» (Command Line), где приводится полная команда для запуска процесса со всеми параметрами и переключателями.

    Как получить подробные сведения о процессах в Windows 7

    Рисунок B. Добавив на вкладку «Процессы» столбцы «Путь к образу» и «Командная строка», можно получить еще более подробные сведения о процессах Windows 7.

    Помимо этих столбцов, на вкладку «Процессы» можно добавить и многие другие. Всего в окне «Выбор столбцов страницы процессов» доступно более 30 опций, описание которых не входит в задачи данной статьи. Узнать о назначении всех колонок можно из справочной статьи «Что означают столбцы памяти Диспетчера задач?» на сайте Microsoft.

    Опция «Открыть место хранения файла»

    Помимо добавления на вкладку столбцов «Путь к образу» и «Командная строка», можно нажать на процессе правой кнопкой мыши и выбрать опцию «Открыть место хранения файла» (Open File Location). При этом откроется папка со всеми файлами, относящимися к данному процессу. К примеру, для процесса «hqtray.exe» на моем компьютере открывается папка «VMware Player» (рис. C).

    Как получить подробные сведения о процессах в Windows 7

    Рисунок C. Команда «Открыть место хранения файла» открывает папку со всеми файлами процесса.

    Свойства процесса

    Еще один источник информации о процессе Windows 7 — окно свойств, которое можно вызвать, нажав на процессе правой кнопкой мыши и выбрав опцию «Свойства» (Properties). Полезные сведения содержатся на вкладке «Подробно» (Details, рис. D).

    Как получить подробные сведения о процессах в Windows 7

    Рисунок D. В окне свойств содержится подробная информация о процессе.

    Утилита Tasklist

    Если вас интересует процесс «Svchost.exe», можно воспользоваться утилитой командной строки Tasklist, чтобы узнать о нем поподробнее. «Svchost.exe» — общее имя процесса для всех служб, запускаемых из динамически подключаемых библиотек (DLL). Чтобы узнать, каким службам принадлежит этот процесс, откройте командную строку (Command Prompt) и выполните следующую команду:

    Tasklist /svc /fo list

    Вы получите список всех запущенных процессов, в котором приводятся сведения о службах для каждого процесса «Svchost.exe» (рис. E).

    Как получить подробные сведения о процессах в Windows 7

    Рисунок E. Команда Tasklist позволяет узнать, каким службам принадлежит процесс «Svchost.exe».

    Узнав имена служб, запомните идентификатор (PID) процесса «Svchost.exe». Теперь откройте вкладку «Службы» (Services) в Диспетчере задач и отсортируйте список по столбцу «ИД процесса» (PID). Найдите нужный идентификатор и посмотрите описание, чтобы понять назначение службы Windows 7 (рис. F).

    Как получить подробные сведения о процессах в Windows 7

    Рисунок F. С помощью идентификатора процесса можно найти описание службы на вкладке «Службы».

    Сведения, к сожалению, весьма скудные, но хотя бы позволяют понять, какая именно служба запустила процесс «Svchost.exe».

    А что думаете вы?

    А вам приходилось использовать Диспетчер задач для поиска информации о запущенных процессах Windows 7? Поделитесь своим опытом в комментариях!

    Автор: Greg Shultz
    Перевод

    SVET

    Оцените статью: Голосов

    Добавить комментарий