PowerShell を使用してレジストリキーの値を取得する

Marion Paul Kenneth Mendoza 2023年1月30日
  1. レジストリキーとは
  2. PowerShell でのレジストリキーのバックアップ
  3. PowerShell で Get-ItemProperty コマンドレットを使用してレジストリキーの値を取得する
  4. PowerShell で Get-ItemPropertyValue コマンドレットを使用してレジストリキーの値を取得する
PowerShell を使用してレジストリキーの値を取得する

エラーの修正、Windows の機能の調整、またはソフトウェアや製品の完全なアンインストールでは、Windows レジストリを編集する必要がある場合があります。

レジストリエディタを使用すると便利な場合がありますが、十分に注意しないとエラーが発生する場合があります。レジストリの編集は非常にデリケートであり、ローカルシステムはそれに依存しています。

この記事では、Windows PowerShell を使用してレジストリキーの値を安全に取得する方法について説明します。

レジストリキーとは

レジストリキーは、構造化ファイルフォルダーに少し似ていると見なすことができますが、Windows レジストリ内にのみ存在します。

さらに、フォルダにファイルが含まれているのと同じように、レジストリキーにもレジストリ値が含まれている場合があります。レジストリキーには、通常サブキーと呼ばれる他のレジストリキーを含めることもできます。

前述のように、Windows レジストリは構造化されており、最上位のレジストリキーはレジストリハイブと呼ばれます。これらは、特別なアクセス許可を持つ特別なレジストリキーと見なされますが、標準のレジストリキーと同じ重要な機能を備えています。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft

上記の例をとると、HKEY_LOCAL_MACHINE または略して HKLM がレジストリのパスの最上位になります。次に、SOFTWARE レジストリキーがそれを継承します。前述のように、レジストリキーには、Microsoft などのサブキーと呼ばれるキーをさらに含めることができます。

PowerShell でのレジストリキーのバックアップ

変更を加える前に、レジストリをバックアップすることをお勧めします。前述のように、レジストリ内の偶発的な変更は、ファイル、ソフトウェア、さらに悪いことに、オペレーティングシステム全体にエラーを引き起こす可能性があります。

ただし、変更するキーのコピーを使用すると、オペレーティングシステムで問題が発生する可能性のある変更を元に戻すことができるので安心できます。

レジストリをすばやくバックアップするために、従来のコマンド reg export を使用する場合があります。たとえば、以下の構文は、HKLM レジストリ全体をバックアップします。

reg export HKLM C:\RegBack\HKLM.Reg /y

バックアップされたレジストリキーは、.REG ファイル形式でエクスポートされます。したがって、レジストリファイルをダブルクリックし、プロンプトに従うことで、バックアップされたレジストリキーをすばやく復元できます。

PowerShell で Get-ItemProperty コマンドレットを使用してレジストリキーの値を取得する

Get-ItemProperty は、相対コマンド Get-Item よりも読みやすい形式でレジストリエントリを返すために使用される PowerShell コマンドレットです。Get-ItemProperty コマンドレットを使用して、特定のレジストリキーの値を取得することもできます。

サンプルコード:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

出力:

ProgramFilesDir : C:\Program Files
PSPath          : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows\CurrentVersion
PSParentPath    : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows
PSChildName     : CurrentVersion
PSDrive         : HKLM
PSProvider      : Microsoft.PowerShell.Core\Registry
一部のレジストリパスにはスペースが含まれているため、レジストリパスは必ず二重引用符("")で囲んでください。パスを二重引用符で囲むと、そのパスのリテラル式が使用され、エラーは発生しません。

このコマンドは、PsPathPsParentPathPsChildnamePSDrivePSProvider、およびキー値の名前にちなんで名付けられた別のプロパティを持つ PSCustomObject オブジェクトを作成します。

したがって、レジストリキーの実際の値だけを出力するために、キー値の名前プロパティをスクリプトに呼び出すことができます。

サンプルコード:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

$keyValue = Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

$keyValue.ProgramFilesDir

出力:

C:\Program Files

コマンド Get-ItemProperty は PowerShell バージョン 2 から 5 で機能します。ただし、Windows PowerShell 5 では、Microsoft は、コマンドラインでのレジストリキーの出力をはるかに簡単にする新しいコマンドレットを導入しました。

PowerShell で Get-ItemPropertyValue コマンドレットを使用してレジストリキーの値を取得する

前述のように、Get-ItemPropertyValue コマンドレットは Windows PowerShell バージョン 5 で導入され、レジストリキーの値をはるかに短く簡単な方法で取得するクエリに対応しています。

コマンドレットは、レジストリファイルパスと、値を照会する必要があるレジストリキーの 2つのパラメーターのみを使用します。

サンプルコード:

Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' 'ProgramFilesDir'

出力:

C:\Program Files
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

関連記事 - PowerShell Registry