How To

PowerShell を使用してレジストリ値を取得する方法

February 14, 2026 1 分で読む Updated: February 14, 2026

Windows でレジストリ値を扱うのは、まるで異星の言語を解読しようとしているかのような感覚に陥ることがよくあります。レジストリキーの中には複雑な階層構造に隠されたものもあり、PowerShell で実行すべき内容を把握するだけでは必ずしも十分ではありません。特にトラブルシューティングや自動化を行う場合はなおさらです。これらの値を取得するコマンドが期待通りに動作しなかったり、理解できないエラーが発生したりするのは、少々面倒です。そこで、このガイドは、レジストリ情報を確実に抽出するために私が役立つと感じた方法を、たとえ状況が奇妙に思える場合でもまとめてまとめたものです。これらの方法を試してみると、レジストリエントリを問題なく検証、クエリ、または簡単に確認できるようになります。重要なのは、それぞれの方法がいつ、なぜ機能するのかを理解することです。なぜなら、最も単純なコマンドが失敗することもあり、その場合は戦略を変える必要があるからです。レジストリ構造をより明確に理解できるようになるため、スタートアップ項目の無効化、インストール状態の確認、あるいは Windows の奇妙な動作のトラブルシューティングなどに役立ちます。

PowerShellでレジストリキーの値を取得する方法

Test-Path — レジストリ パスは本当に存在しますか?

この部分は基本的なものですが、非常に役立ちます。Windows PowerShell のTest-Pathコマンドレットは、何か複雑なことをする前に、レジストリ キーまたは値が存在するかどうかを確認する最初のチェックのようなものです。スクリプト、特にエラー処理に最適です。基本的に、 のようなコマンドを実行しTest-Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run、キーが存在する場合は$trueが返されます。キーがない場合は$false が返されます。パスにはスペースや奇妙な文字が含まれている場合があるので、パスは二重引用符で囲んでください: 。パスが技術的には正しいにもかかわらず、アクセス許可の不足やタイプミスのために PowerShell が$falseTest-Path "HKLM:\Some\Really Weird Path"を返すケースを見たことがあります。それでも、スクリプトがクラッシュしたり、存在しないキーでコマンドが実行されたりするのを防ぐための確実な第一歩です。セットアップによっては少し不安定ですが、一般的には、物事を整理するのに役立ちます。

Test-RegistryValue — 必要な値が本当に存在しますか?

特定のレジストリ値を確認するのは、パスを調べるほど簡単ではありません。キー内に特定の文字列や数値が格納されているかどうかを確認する必要がある場合もあります。以下の関数(コピーまたはカスタマイズ可能)は、その確認に役立ちます。この関数が機能する理由は、特定のプロパティ(スタートアップ項目や設定フラグなど)を取得し、それが存在するかどうかを通知するからです。例えば、特定のプログラムがログイン時に実行されるように設定されているか、何らかの機能フラグが有効になっているかを確認したい場合などに便利です。構文は以下のとおりです。

Function Test-RegistryValue ($regkey, $name) { if (Get-ItemProperty -Path $regkey -Name $name -ErrorAction Ignore) { $true } else { $false } }

$regkeyレジストリパス(例:HKCU:\Software\YourApp)と、$name必要な値(例:Enabled)に置き換えてください。あるマシンではすぐに動作するかもしれませんが、別のマシンではsudo/管理者権限が必要になるかもしれません。少し奇妙に感じるかもしれませんが、スクリプト作成やトラブルシューティングの際に、このちょっとしたチェックがどれだけ多くの手間を省いてくれるか、きっと驚くはずです。

Reg Query — コマンドラインと PowerShell がついに統合

PowerShellコマンドだけでは物足りない、あるいは昔ながらの方法を好む場合でも、reg queryは依然として便利です。これはレジストリキーの内容をダンプするコマンドラインユーティリティで、簡単なチェックやバッチファイルからのスクリプト作成に最適です。 のようなコマンドを実行するとreg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"、そのキー以下のスタートアップ項目がすべて一覧表示されます。秘訣は、特に権限によってアクセスがブロックされている場合など、PowerShellまたはコマンドプロンプトを管理者として実行することを忘れないことです。また、必要に応じて を実行してPowerShellでラップすることもできますInvoke-Expression 'reg query...'。少し古風な方法ですが、膨大なリストを取得したり、キーや値が正しく設定されていることを確認したりするのには、非常に信頼性の高いツールです。

Get-Item とその仲間 — レジストリアクセスのための PowerShell の威力

Get-Itemとの大ファンですGet-ItemProperty。レジストリ関連の情報を調べるのに、より人間的な方法だからです。値を取得する主な方法は、Get-ItemPropertyValueGet-ChildItem の2つです。それぞれ得られる情報は異なりますが、どちらも信頼できる選択肢です。

Get-ItemPropertyValue — 簡単かつ正確

このコマンドは、特定のデータを求めるようなものです。「このレジストリ エントリの値は何ですか?」たとえば、Chromium を起動したい場合は、次のコマンドを実行します。

Get-ItemPropertyValue -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run -Name Chromium

レジストリ値が存在する場合、コマンドはその内容を出力します。存在しない場合は、 で処理しない限りエラーが発生します-ErrorAction。私は、多数のサブキーを掘り下げることなく、値を素早く取得したいときにこれを使用しました。

Get-ChildItem — レジストリキー内のすべての項目を一覧表示する

これは、特定のレジストリパス内のサブキーまたは値の完全なリストを取得するのに便利です。レジストリに対するディレクトリリストのように機能します。次のように実行します。

Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion

絞り込みが必要ですか? パラメータを追加したり、-Nameまたはを使ってフィルタリングしたりできます-Exclude。例えば、 C: で始まるエントリを無視するには、Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion -Exclude C*を使用します。生の reg クエリ出力よりも少し見やすく、システムによっては解釈しやすくなります。