Как найти имя запущенного процесса по значению свойства "Описание файла"?
Улучшенное решение (благодаря @BenN после обсуждения в чате):
Используйте следующий скрипт PowerShell (Get-ProcessName.ps1).
$_match=$Args[0].ToLowerInvariant()
Get-Process | where {$_.Description -ne $null -and $_.Description.ToLowerInvariant().Contains($_match)} | select Path, Description, ProcessName
Заметки:
- Первый параметр, передаваемый в сценарий, используется для выполнения поиска без учета регистра в значении свойства "Описание файла".
- Передача "блокнот" будет соответствовать «notepad.exe» и «notepad ++. Exe», если они оба работают.
Пример вывода:
PS F:\test> .\Get-ProcessName notepad
Path Description ProcessName
---- ----------- -----------
C:\Windows\system32\notepad.exe Notepad notepad
E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe Notepad++ : a free (GNU) source code editor notepad++
E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe Notepad++ : a free (GNU) source code editor notepad++
PS F:\test>
Оригинальное решение:
Используйте следующий скрипт Powershell (Get-ProcessName.ps1).
$_name=$Args[0]
$_match="*"+$Args[0]+"*"
Get-Process | ForEach {
if ($_.Path) {
$_filedescription=(Get-Item $_.Path).VersionInfo.FileDescription
if ($_filedescription -like $_match) {
Write-Output "File Description: '$_filedescription', Process Path: '$($_.Path)', Process Name: '$($_.ProcessName)'"
}
}
}
Заметки:
- Первый параметр, передаваемый в сценарий, используется для выполнения поиска без учета регистра с использованием подстановочного знака в значении свойства "Описание файла".
- Если вы передадите
string
она будет искать, используя *string*
и будет соответствовать string
любом месте свойства "Описание файла"
- Передача "блокнот" будет соответствовать «notepad.exe» и «notepad ++. Exe», если они оба работают.
- Сценарий выводит "Описание файла", "Путь процесса" и "Имя процесса".
Пример вывода:
PS F:\test> .\Get-ProcessName notepad
File Description: 'Notepad', Process Path: 'C:\Windows\system32\notepad.exe', Process Name: 'notepad'
File Description: 'Notepad++ : a free (GNU) source code editor', Process Path: 'E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe', Process Name: 'notepad++'
File Description: 'Notepad++ : a free (GNU) source code editor', Process Path: 'E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe', Process Name: 'notepad++'
PS F:\test>
Заметки:
- «notepad ++. exe» имеет два процесса в памяти при запуске переносной версии.