Powershell какой процесс открыл файл
Gets the processes that are running on the local computer.
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.
Сортировка Вывода
Выполнить сортировку вывода командлета Get-Process можно передав его вывод по конвейеру командлету Sort-Object . К примеру, сортировка по имени процесса, в алфавитном порядке.
Теперь, отсортируем вывод по полую WS, в порядке убывания. Так мы сможем определить самый прожорливый процесс, он будет первым в списке.
Пример 7. Получение модулей, загруженных с помощью указанного процесса
Эта команда использует параметр Module для получения модулей, загруженных процессом. Эта команда получает модули для процессов с именами, начинающимися с SQL.
Чтобы выполнить эту команду в Windows Vista и более поздних версиях Windows с процессами, которыми вы не владеете, необходимо запустить PowerShell с помощью параметра "Запуск от имени администратора".
Пример 5. Добавление свойства к стандартному отображению выходных данных Get-Process
В этом примере извлекаются процессы с локального компьютера и удаленного компьютера (S1). Полученные процессы передаются Format-Table в команду, которая добавляет свойство MachineName в стандартное Get-Process отображение выходных данных.
Фильтрация Выводимых Данных
Полученные данные, представляют полный список процессов системы. Что если вам необходимо отслеживать только конкретные процессы. Вывод командлета Get-Process можно отфильтровать используя имя конкретного процесса, или маску имени процесса.
Теперь все то же самое, но с использованием масок.
Для ясности, знак звездочки * , означает любое количество символов, а знак вопросительного знака ? , один любой символ.
Кроме фильтрации по именам процессов, можно отфильтровать и выводимые поля всей таблицы. К примеру, нас интересуют только поля Id, ProcessName, WS. Причем вывод должен быть именно в указанном порядке.
Описание
Командлет Get-Process получает процессы на локальном или удаленном компьютере.
Без параметров этот командлет получает все процессы на локальном компьютере. Можно также указать конкретный процесс по имени процесса или идентификатору процесса (PID) или передать объект процесса через конвейер в этот командлет.
По умолчанию этот командлет возвращает объект процесса, который содержит подробные сведения о процессе и поддерживает методы, позволяющие запускать и останавливать процесс. Вы также можете использовать параметры командлета Get-Process , чтобы получить сведения о версии файла для программы, которая выполняется в процессе, и получить модули, загруженные процессом.
Остановка процессов (Stop-Process)
Windows PowerShell позволяет гибко выводить списки процессов, но как обстоят дела с остановкой процесса?
Командлет Stop-Process принимает имя или идентификатор, указывающие останавливаемый процесс. Возможность остановки процессов зависит от ваших разрешений. Некоторые процессы остановить нельзя. Например, при попытке остановить неактивный процесс возникает ошибка:
Можно также принудительно вывести запрос с помощью параметра Confirm. Он особенно удобен при использовании подстановочного знака в имени процесса, так как случайно может быть определено соответствие с некоторыми процессами, которые не нужно останавливать:
Сложную обработку процессов можно реализовать с помощью командлетов фильтрации объектов. Так как объект Process имеет свойство Responding, которое равно true, если он перестал отвечать, вы можете остановить все неотвечающие приложения с помощью следующей команды:
Аналогичный подход возможен и в других ситуациях. Предположим, например, что приложение дополнительной области уведомлений запускается автоматически при открытии другого приложения. Эта процедура может работать неправильно в сеансах служб терминалов, однако вам все равно нужно сохранить ее в сеансах, выполняемых в консоли физического компьютера. Сеансы, подключенные к рабочему столу физического компьютера, всегда имеют идентификатор сеанса 0, поэтому можно остановить все экземпляры процесса, находящиеся в других сеансах, с помощью Where-Object и SessionId процесса:
Командлет Stop-Process не использует параметр ComputerName. Поэтому для выполнения команды остановки процесса на удаленном компьютере необходимо использовать командлет Invoke-Command . Например, чтобы остановить процесс PowerShell на удаленном компьютере Server01, введите:
Вывод Взаимосвязанных Модулей
Получить список модулей используемых процессом, можно с помощью поля Modules. Желательно выводить данное поле для конкретно отдельного процесса, так как вывод данного свойства для всех процессов, выведет общий список всех используемых модулей.
Если внимательно посмотреть на список модулей, то можно увидеть загруженные библиотеки DLL находящиеся в одной папке с исполняемым файлом.
В статье было рассмотрено: Как вывести список процессов в PowerShell? Как выполнить сортировку процессов в PowerShell? Как вывести взаимосвязанные службы процессов в PowerShell? Как вывести взаимосвязанные модули процесса в PowerShell? Как отфильтровать список процессов в PowerShell? Как вывести процессы по заданному условию в PowerShell?
Parameters
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.
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: | SwitchParameter |
Aliases: | FV, FVI |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
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: | Int32 [ ] |
Aliases: | PID |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates that the UserName value of the Process object is returned with results of the command.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies one or more process objects. Enter a variable that contains the objects, or type a command or expression that gets the objects.
Type: | Process [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
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: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
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: | String [ ] |
Aliases: | ProcessName |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
Пример 8. Поиск владельца процесса
Первая команда показывает, как найти владельца процесса. Параметр IncludeUserName требует повышенных прав пользователя (запуск от имени администратора). Выходные данные показывают, что владельцем является Domain01\user01.
Вторая и третья команда — это еще один способ найти владельца процесса.
Вторая команда используется Get-WmiObject для получения процесса PowerShell. Он сохраняет его в переменной $p .
Третья команда использует метод GetOwner для получения владельца процесса в $p . Выходные данные показывают, что владельцем является Domain01\user01.
Examples
Вывод Списка Процессов Системы
Получить информацию о процессах можно с помощью командлета Get-Process . Запускаем PowerShell, и выполняем команду:
Вывод команды представлен в виде таблицы. По умолчанию выводятся поля: Количество дескрипторов процесса (Handles), Объем невыгружаемой памяти процесса (NPM - Nonpaged System Memory), Объем памяти процесса возможный для записи в файл подкачки (PM - Paged System Memory), Объем памяти процесса выделенный в оперативной памяти (WS - Working Set), Использованное процессорное время (CPU), Имя процесса (ProcessName).
3. OpenedFilesView
OpenedFilesView это бесплатная программа не требующая установки, она покажет все открытые файлы, имеется возможность искать по имени или пути файла:
Syntax
Пример 1. Получение списка всех активных процессов на локальном компьютере
Эта команда получает список всех активных процессов, запущенных на локальном компьютере. Определение каждого столбца см. в разделе "Заметки ".
Вывод Дополнительной Информации
Кроме базовых полей (Handles, NPM, PM, WS, CPU, SI, ProcessName) выводимых командлетом Get-Process , существуют еще дополнительные. По умолчанию они не выводятся при выполнении командлета, так как вывод всех полей в виде таблицы, не может поместиться в окне консоли, даже если данное окно развернуть на весь экран. Но отобразить все поля все же можно.
Для примера, выведем все поля процесса winlogon в виде списка.
Как можно заметить, полей довольно-таки много. Причем значение некоторых дублируется, к примеру Name и ProcessName. Это сокращения, для удобства использования.
Дополнительные поля содержат полезную информацию, к примеру:
Path - Путь до исполняемого файла процесса.
Description - Описание исполняемого файла.
MainWindowTitle - Заголовок главного окна процесса, если окно конечно есть.
Modules - Модули используемые процессом.
MainModule - Главный модуль процесса.
StartTime - Время запуска процесса.
Priority - Приоритет процесса.
Company - Компания создавшая исполняемый файл процесса.
ProductVersion - Версия исполняемого файла процесса.
UserProcessorTime - То же что и CPU (использованное процессорное время), но только в более удобном формате.
Threads -
Составим из этих полей свою версию вывода информации о процессах.
Example 5: Add a property to the standard Get-Process output display
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.
Синтаксис
Вывод Процессов по Условию
Условия, позволяют выбрать из списка всех процессов, те, что удовлетворяют определенным критериям. К примеру выберем из списка процессов, все, объем выделенной памяти для которых больше 50 МБ.
Вся выборка осуществляется с помощью командлета Where-Object . Если вкратце, данный командлет принимает на вход указанный параметр, и выполняет его сравнение. В данном случае, в качестве параметра выступает поле WS, значение которого должно быть больше или равно 50MB. Данное равенство указывается с помощью параметра -ge (Greater than or equal).
Существуют и другие параметры сравнения: -gt больше, -lt меньше, -eq равно, -ge больше/равно, -le меньше/равно. Подробнее все параметры сравнения, можно посмотреть в справке по командлету Where-Object .
Пример 2. Получение всех доступных данных об одном или нескольких процессах
Эта команда возвращает все доступные данные о процессах Winword и проводника на компьютере. Он использует параметр Name для указания процессов, но исключает необязательное имя параметра. Оператор | конвейера передает данные командлету Format-List , который отображает все доступные свойства * объектов обработки Winword и Explorer.
Процессы также можно определить по идентификаторам (PID). Например, Get-Process -Id 664, 2060 .
Example 8: Find the owner of a process
This command shows how to find the owner of a process. On Windows, the IncludeUserName parameter requires elevated user rights (Run as Administrator). The output reveals that the owner is Domain01\user01.
Примеры
Example 2: Get all available data about one or more processes
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 .
Пример 10. Получение всех процессов с заголовком главного окна и их отображение в таблице
Эта команда возвращает все процессы с заголовком главного окна и отображает их в таблице, где также указаны идентификатор и имя процесса.
Свойство mainWindowTitle является лишь одним из многих полезных свойств возвращаемого Get-Process объекта Process. Чтобы просмотреть все свойства, передайте результаты Get-Process команды в Get-Member командлет Get-Process | Get-Member .
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.
Как я могу узнать, какой процесс блокирует файл или папку в Windows? Например, при попытке удалить папку Windows сообщает следующее:
Операция не может быть завершена, так как эти папка или файл открыты в другой программе. Закройте папку или файл и повторите попытку.
Такая же ошибка может возникнуть при переименовании или удаления как папки, так и файла. Но как узнать, какая программа или приложение в настоящее время использует его и не позволяет удалить файл или папку?
Имеется сразу несколько способов и программ чтобы найти процессы и программы, которые открыли файл.
Example 6: Get version information for a process
This command uses the FileVersionInfo parameter to get the version information for the pwsh.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.
Содержание
Запуск, отладка и ожидание процессов
Windows PowerShell также имеет командлеты для запуска (или перезапуска), отладки процесса и ожидания завершения процесса перед выполнением команды. Дополнительные сведения об этих командлетах см. в разделах справки по каждому из них.
Когда нужно просмотреть информацию о процессах более детально, можно воспользоваться программами на подобии Process Explorer или Process Hacker. А если выбор ограничен? Получить информацию о процессах поможет PowerShell.
Example 4: List processes on the computer in groups based on 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 ).
Пользователь Запустивший Процесс
Если вы обратили внимание, то скорее всего заметили, что среди дополнительных полей нет информации о пользователе запустившем конкретный процесс. Вывести данную информацию можно выполнив командлет Get-Process с ключом -IncludeUserName .
2. Process Explorer
Перейдите в Find → Handle or DLL.
В текстовом поле "Handle or DLL substring:" введите путь до файла или папки. Будут показаны все процессы, которые имеют открытый обработчик на этот файл.
Параметры
Указывает компьютеры, для которых этот командлет получает активные процессы. По умолчанию это локальный компьютер.
Введите netBIOS-имя, IP-адрес или полное доменное имя (FQDN) одного или нескольких компьютеров. Чтобы указать локальный компьютер, введите имя компьютера, localhost или точку (.).
Этот параметр не зависит от удаленного взаимодействия Windows PowerShell. Параметр ComputerName этого командлета можно использовать, даже если компьютер не настроен для выполнения удаленных команд.
Type: | String [ ] |
Aliases: | Cn |
Position: | Named |
Default value: | Local computer |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Указывает, что этот командлет получает сведения о версии файла для программы, которая выполняется в процессе.
В Windows Vista и более поздних версиях Windows необходимо открыть PowerShell с параметром "Запуск от имени администратора", чтобы использовать этот параметр для процессов, которые не принадлежат вам.
Нельзя использовать параметры FileVersionInfo и ComputerName командлета Get-Process в той же команде.
Чтобы получить сведения о версии файла для процесса на удаленном компьютере, используйте Invoke-Command командлет.
Использование этого параметра эквивалентно получению свойства MainModule.FileVersionInfo каждого объекта процесса. При использовании этого параметра Get-Process возвращает объект FileVersionInfo System.Diagnostics.FileVersionInfo, а не объект процесса. Таким образом, выходные данные команды невозможно передать командлету, который ожидает объект процесса, например Stop-Process .
Type: | SwitchParameter |
Aliases: | FV, FVI |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает один или несколько процессов по идентификатору процесса (PID). При указании нескольких идентификаторов разделяйте их запятыми. Чтобы найти piD процесса, введите Get-Process .
Type: | Int32 [ ] |
Aliases: | PID |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Указывает, что значение UserName объекта Process возвращается с результатами команды.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает один или несколько объектов процесса. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты.
Type: | Process [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Указывает, что этот командлет получает модули, загруженные процессами.
В Windows Vista и более поздних версиях Windows необходимо открыть PowerShell с параметром "Запуск от имени администратора", чтобы использовать этот параметр для процессов, которыми вы не владеете.
Чтобы получить модули, загруженные процессом на удаленном компьютере, используйте Invoke-Command командлет.
Этот параметр эквивалентен получению свойства Modules каждого объекта процесса. При использовании этого параметра этот командлет возвращает объект ProcessModule System.Diagnostics.ProcessModule, а не объект процесса. Таким образом, выходные данные команды невозможно передать командлету, который ожидает объект процесса, например Stop-Process .
При использовании параметров Module и FileVersionInfo в одной команде этот командлет возвращает объект FileVersionInfo со сведениями о версии файла всех модулей.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает один или несколько процессов по имени процесса. Можно ввести несколько имен процессов (разделенных запятыми) и использовать подстановочные знаки. Имя параметра (Name) указывать необязательно.
Type: | String [ ] |
Aliases: | ProcessName |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
Объект процесса можно передать в этот командлет.
Пример 4. Перечисление процессов на компьютере в группах на основе приоритета
Эти команды перечисляют процессы на компьютере в группах на основе их класса приоритета. Первая команда получает все процессы на компьютере, а затем сохраняет их в переменной $A .
Вторая команда передает объект Process , хранящийся в переменной $A Get-Process , командлету, а затем Format-Table командлету, который форматирует процессы с помощью представления Priority .
Представление "Приоритет" и другие представления определяются в файлах формата PS1XML в домашнем каталоге PowerShell ( $pshome ).
Получение процессов (Get-Process)
Для получения процессов, запущенных на локальном компьютере, выполните командет Get-Process без параметров.
Отдельные процессы можно получить, указав их имена или идентификаторы. Следующая команда возвращает процесс Idle:
То, что в некоторых ситуациях командлеты не возвращают данные, является нормальным. Однако если при указании процесса по его идентификатору Get-Process не находит совпадений, он выдает ошибку, так как стандартной целью является получение известного выполняющегося процесса. Если процесс с указанным идентификатором отсутствует, весьма вероятно, что идентификатор неправильный или нужный процесс уже завершился:
Параметр Name командлета Get-Process можно использовать для указания подмножества процессов на основе имени процесса. Параметр Name может принимать несколько имен в виде списка с разделителями-запятыми и поддерживает использование подстановочных знаков, что позволяет задавать шаблоны имен.
Например, следующая команда возвращает процессы, имена которых начинаются с "ex.".
Поскольку класс System.Diagnostics.Process .NET является основой для процессов Windows PowerShell, он удовлетворяет некоторым соглашениям, используемым System.Diagnostics.Process. Одно из таких соглашений требует, чтобы имя процесса для исполняемого файла никогда не содержало ".exe" в конце имени этого файла.
Get-Process также принимает несколько значений для параметра Name.
Параметр ComputerName командлета Get-Process можно использовать для получения процессов на удаленных компьютерах. Например, следующая команда получает процессы PowerShell на локальном (представленным "localhost") и двух удаленных компьютерах.
Имена компьютеров в этих данных не указаны, однако они хранятся в свойстве MachineName объектов процесса, возвращаемых Get-Process . Следующая команда использует командлет Format-Table для отображения свойств ID, ProcessName и MachineName (ComputerName) объектов процесса.
Эта более сложная команда добавляет в стандартные отображаемые данные Get-Process свойство MachineName.
Выходные данные
System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Diagnostics.ProcessModule
По умолчанию этот командлет возвращает объект System.Diagnostics.Process . Если используется параметр FileVersionInfo , он возвращает объект System.Diagnostics.FileVersionInfo . Если вы используете параметр Module без параметра FileVersionInfo , он возвращает объект System.Diagnostics.ProcessModule .
Командлеты Process в Windows PowerShell позволяют управлять локальными и удаленными процессами в Windows PowerShell.
Example 3: Get all processes with a working set greater than a specified size
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 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.
Пример 6. Получение сведений о версии для процесса
Эта команда использует параметр FileVersionInfo для получения сведений о версии файла powershell.exe, который является основным модулем для процесса PowerShell.
Чтобы выполнить эту команду с процессами, которые не принадлежат Windows Vista и более поздним версиям Windows, необходимо открыть PowerShell с помощью параметра "Запуск от имени администратора".
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 10: Get all processes that have a main window title and display them in a table
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 .
Остановка всех остальных сеансов Windows PowerShell
В некоторых случаях может пригодиться возможность остановки всех выполняющихся сеансов Windows PowerShell, отличных от текущего. Если сеанс использует слишком много ресурсов или недоступен (он может выполняться удаленно или в другом сеансе), возможно, остановить его напрямую не получится. При попытке остановить все выполняющиеся сеансы может быть завершен текущий сеанс.
Каждый сеанс Windows PowerShell имеет переменную среды PID, содержащую идентификатор процесса Windows PowerShell. Можно проверить переменную $PID на наличие идентификатора каждого сеанса и завершить только сеансы Windows PowerShell с другим идентификатором. Следующая команда конвейера делает именно это и возвращает список завершенных сеансов (из-за использования параметра PassThru):
Пример 3. Получение всех процессов с рабочим набором, превышающим указанный размер
Эта команда возвращает все процессы, размер рабочего набора которых превышает 20 МБ. Он использует Get-Process командлет для получения всех выполняющихся процессов. Оператор | конвейера передает объекты процесса командлету Where-Object , который выбирает только объект со значением больше 20 000 000 байт для свойства WorkingSet .
WorkingSet является одним из многих свойств объектов процесса. Чтобы просмотреть все свойства, введите Get-Process | Get-Member . По умолчанию значения всех свойств объема указываются в байтах, несмотря на то что по умолчанию отображаются они отображаются в килобайтах и мегабайтах.
Вывод Взаимосвязанных Служб
За запущенными процессами, могут скрываться службы. То есть, какой-то из процессов может быть на самом деле запущенной службой. Попробуем вывести такие службы.
Команду можно дополнить описанием каждой службы, и сократить ее размер за счет использования алиасов.
1. Монитор ресурсов
Для поиска программы или процесса, открывшей файл, вы можете использовать Монитор ресурсов (Resource Monitor), который встроен в Windows 7, 8 и 10.
Откройте Монитор ресурсов, это можно сделать несколькими способами:
- В поле для поиска введите «Монитор ресурсов» или resmon.exe:
- Или в Диспетчере задач перейдите на вкладку «Производительность» и найдите кнопку «Открыть монитор ресурсов»:
В Мониторе ресурсов перейдите на вкладку ЦП (CPU). Используйте поле поиска в разделе «Связанные дескрипторы»
В результатах поиска в столбце «Образ» вы увидите, какая программа запустила процесс, блокирующий файл.
Здесь же вы можете кликнуть правой кнопкой мыши по любому найденному процессу и нажать «Завершить процесс», чтобы закрыть программу, блокирующую файл.
4. LockHunter
LockHunter — это надёжная программа для разблокировки файлов.
Это бесплатный инструмент для удаления файлов, заблокированных неизвестным процессом. LockHunter полезен для борьбы с вредоносными программами и другими программами, которые блокируют файлы без причины. В отличие от других подобных инструментов, он удаляет файлы в корзину, поэтому вы можете восстановить их, если удалили по ошибке.
Получает процессы, запущенные на локальном или удаленном компьютере.
Example 9: Use an automatic variable to identify the process hosting the current session
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.
Inputs
You can pipe a process object to this cmdlet.
Пример 9. Используйте автоматическую переменную для идентификации процесса, в котором размещается текущий сеанс
Эти команды показывают, как использовать $PID автоматическую переменную для определения процесса, в котором размещается текущий сеанс PowerShell. Этот метод можно использовать для различения хост-процесса от других процессов PowerShell, которые может потребоваться остановить или закрыть.
Первая команда получает все процессы PowerShell в текущем сеансе.
Вторая команда получает процесс PowerShell, на котором размещается текущий сеанс.
Закрытие Процессов
Научившись фильтровать необходимые процессы, можно с ними можно выполнять различные действия. К примеру можно их закрыть.
Допустим в системе запущено 4 процесса notepad и 1 notepad++.
Закрыть 4 обычных блокнота, можно передав отфильтрованный список командлету Stop-Process .
Читайте также: