PowerShellでプログラムのインストールフォルダを見つける

1 min 155 words
Suzuki Shun Placeholder text describing the default author's avatar.

7-zipをシェルから使いたかったが, PATHに入ってなかった. わざわざ, PATHに追加するのも面倒なので, PowerShellで7-zipの実行ファイルの場所を検索して, 一時的にPATHに追加することにした.

インストール先を探すには, レジストリを見て, 正規表現でマッチする要素を取り出せば良さそう.

function FindInstallPath($name) {
    $reg = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | ForEach-Object { Get-ItemProperty $_.PsPath } | Where-Object DisplayName -match $name | Select-Object -first 1
    if ($reg) {
        return $reg.InstallLocation
    }
    else {
        return "NULL"
    }
}

例えば, 以下のように使える.

$7zip_path = FindInstallPath '7-Zip'
$env:Path = "$env:Path;$7zip_path"