アプリ名の一部からexeファイルのパスを検索する方法。where.exeのPowerShell版

コンピュータ

パスが切られたディレクトリから検索

where.exeのPowerShell版
コマンド

Get-Command chrome

結果

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     chrome.exe                                         0.0.0.0    C:\Users\karet\scoop\shims\chrome.exe

PowerShellスクリプト

ChatGPTに作ってもらいました。

ファイル名:Find-App.ps1

<#
.SYNOPSIS
  指定したパターンに一致するアプリケーション(.exeファイル)をPATH環境変数および任意のフォルダから再帰的に検索します。

.DESCRIPTION
  指定されたワイルドカードパターン(例: *chrome*.exe)に一致する実行ファイルを、
  環境変数 PATH に登録されたフォルダと、ユーザー指定の追加フォルダを対象に検索します。

.PARAMETER pattern
  検索するファイル名のパターン。ワイルドカード(* や ?)が使用可能です。
  省略時は "*chrome*.exe" が使用されます。

.PARAMETER AdditionalPaths
  検索対象に追加する任意のフォルダパス(複数可)。PATH環境変数と併せて検索されます。

.EXAMPLE
  .\Find-App.ps1 -pattern "*vlc*.exe" -AdditionalPaths "C:\Apps","D:\Portable"

.EXAMPLE
  Get-Help .\Find-App.ps1

  このスクリプトのヘルプを表示します。

.NOTES
  - アクセス拒否されるディレクトリには try/catch で対応。
  - Get-Help 表示に対応。
#>

param (
    [string]$pattern = "*chrome*.exe",
    [string[]]$AdditionalPaths = @()
)

# PATH環境変数 + 任意パスを結合
$searchPaths = ($env:PATH).Split(';') + $AdditionalPaths

foreach ($path in $searchPaths) {
    if (Test-Path $path) {
        try {
            Get-ChildItem -Path $path -Recurse -Filter $pattern -File -ErrorAction Stop
        }
        catch {
            Write-Verbose "アクセス拒否またはエラー: $path"
        }
    }
}

paramの$AdditionalPaths = @()の部分に自分の環境のインストールパスをあらかじめセットしておくと便利だと思います。

実行例:

Find-App.ps1 -pattern "*gimp*.exe"

    Directory: C:\Program Files\GIMP 2\bin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/05/03    18:40        9034728 gimp-2.10.exe
-a---          2024/05/03    18:41        3684120 gimp-console-2.10.exe
-a---          2024/05/03    18:41          55656 gimp-debug-resume.exe
-a---          2024/05/03    18:41          51032 gimp-debug-tool-2.0.exe
-a---          2024/05/03    18:41          35144 gimp-test-clipboard-2.0.exe
-a---          2024/05/03    18:42          43160 gimptool-2.0.exe

    Directory: C:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins\gimpressionist

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/05/03    18:58         157720 gimpressionist.exe

コメント