Дмитрий Яковлев


Как найти и использовать путь к исполняемому файлу программы в PowerShell

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

Здесь на помощь приходит командлет Get-Command. Этот командлет позволяет получить информацию обо всех командах, доступных в PowerShell, включая не только командлеты и функции, но и установленные программы, пути к которым содержатся в переменной окружения $Env:PATH.

Например, получить информацию об исполняемом файле php.exe, при условии, что при установке PHP путь был добавлен в переменную окружения PATH, можно так:

Get-Command -Name php

Результат выполнения командлета Get-Command для вывода информации об исполняемом файле php.exe

Как видно на скриншоте, свойство Source содержит полный путь к исполняемому файлу программы. Получить значение свойства Source в виде строки для дальнейшей работы с ним в сценарии, например, чтобы передать другому командлету, можно так:

(Get-Command -Name php).Source

Полученный путь включает в себя имя исполняемого файла. Однако если нужен путь, содержащий только путь до родительской директории исполняемого файла, можно применить командлет Splith-Path.

(Get-Command -Name php).Source | Split-Path -Parent

Теперь, имея путь до родительской директории исполняемого файла команды, можно, к примеру, открыть её в Проводнике Windows.

explorer ((Get-Command -Name php).Source | Split-Path -Parent)

Или, раз именно PHP используется в качестве примера, открыть для редактирования в Блокноте файл настроек php.ini.

notepad (((Get-Command -Name php).Source | Split-Path -Parent) + "\php.ini")

Ещё одна задача решена средствами PowerShell. Теперь вы точно знаете, как найти путь к исполняемому файлу программы, сделав это быстрее и проще, чем через поиск файлов Windows.