(Get-ChildItem -Path HKLM:\SOFTWARE\ORACLE | Where-Object {$_.PSChildName -like "KEY_*"}).GetValue("ORACLE_HOME")
エイリアスを使うと、
(gci HKLM:\SOFTWARE\ORACLE | ? {$_.PSChildName -like "KEY_*"}).GetValue("ORACLE_HOME")
Windows 64-bit に Oracle Client 32-bit をインストールしている場合
(gci HKLM:\SOFTWARE\WOW6432Node\ORACLE | ? {$_.PSChildName -like "KEY_*"}).GetValue("ORACLE_HOME")
レジストリ・パラメータについて
データベース管理者リファレンス for Microsoft Windows によると
レジストリ・パラメータの概要
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_HOMENAMEについて
コンピュータの新規OracleホームにOracle製品をインストールするたびに、HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_HOMENAME
が作成されます。
このサブキーにはほとんどのOracle製品に対するパラメータ値が含まれます
(略)
ORACLE_HOME
Oracle製品がインストールされるOracleホーム・ディレクトリを指定します。
とあります。
このレジストリのサブキーの情報は %ORACLE_HOME%\BIN\oracle.key
に記載されています。したがって、以下のようにPATH を探索してレジストリのサブキーを取得することもできます。
Get-Content (Join-Path ($Env:Path.Split(';') | ? {($_ -ne "") -and (Test-Path (Join-Path $_ oracle.key))}) oracle.key)
上述のワンライナーでは 簡便なORACLE_HOME
というプロパティがあるキーを取得するという方法を採用しています。
`oracle.key` のあるフォルダの一つ上のフォルダが `ORACLE_HOME` ですので、以下のワンライナーでも`ORACLE_HOME` が取得できます。
Split-Path ($Env:Path.Split(';') | ? {($_ -ne "") -and (Test-Path (Join-Path $_ oracle.key))})