PowerShell を使用してレジストリキーの値を取得する
- レジストリキーとは
- PowerShell でのレジストリキーのバックアップ
-
PowerShell で
Get-ItemProperty
コマンドレットを使用してレジストリキーの値を取得する -
PowerShell で
Get-ItemPropertyValue
コマンドレットを使用してレジストリキーの値を取得する
エラーの修正、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
""
)で囲んでください。パスを二重引用符で囲むと、そのパスのリテラル式が使用され、エラーは発生しません。このコマンドは、PsPath
、PsParentPath
、PsChildname
、PSDrive
、PSProvider
、およびキー値の名前にちなんで名付けられた別のプロパティを持つ 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn