PowerShell レジストリ操作
PowerShellを使用したレジストリの操作方法についてまとめます。
作成
・キーの追加
# キーの追加
New-Item 'HKCU:\Hoge\x'
# 「HKCU:\Hoge\x」が存在しない場合、エラーになる
New-Item 'HKCU:\Hoge\x\y'
# Forceをつけると存在しないキーを作成する
# ・すでに存在する場合はエントリーを削除して作りなおす
New-Item 'HKCU:\Hoge\x\y' -Force
・エントリーの追加
# エントリー追加 値
New-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name 'v1' -PropertyType 'DWord' -Value 1
# エントリー追加 文字列
New-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name 's1' -PropertyType 'String' -Value 'もじれつ'
# エントリー追加 複数行
New-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name 's2' -PropertyType 'MultiString' -Value ('aaa', 'bbbb', 'ccc')
# エントリー追加 バイナリー値
New-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name 'b1' -PropertyType 'Binary' -Value (0x01,0x02,0x03)
# エントリー追加 16進数
New-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name 'q2' -PropertyType 'QWord' -Value 0xfedcfedc
参照
・キーの内容を取得
# 指定のキー以下を調べる
Get-ChildItem -LiteralPath 'HKCU:\SOFTWARE\Microsoft\Edge'
# ワイルドカードを用いて「IE*」で始まるものを列挙
Get-ChildItem -Path 'HKCU:\SOFTWARE\Microsoft\Edge\IE*'
・エントリーの値を取得
# エントリーの値を取得
Get-ItemPropertyValue -LiteralPath 'HKCU:\SOFTWARE\Microsoft\Edge\IEMigration' -Name MhtTakenFromIE
# ワイルドカードも指定可能
Get-ItemPropertyValue -Path 'HKCU:\SOFTWARE\Microsoft\Edge\Defaults\' -name is_startup_page_recommended
# エントリーを列挙して、ループで利用
$PropertyList = (Get-ChildItem -Path 'HKCU:\SOFTWARE\Microsoft\Edge\Defaults*').Property
foreach($i in $PropertyList ){
Get-ItemPropertyValue -Path 'HKCU:\SOFTWARE\Microsoft\Edge\Defaults\' -name $i}
# ループで利用
$PropertyList = ('is_dse_recommended','is_startup_page_recommended')
foreach($i in $PropertyList ){
Get-ItemPropertyValue -Path 'HKCU:\SOFTWARE\Microsoft\Edge\Defaults\' -name $i
}
・キーの存在チェック
# 存在するキーの場合は$True
Test-Path -LiteralPath "HKCU:\SOFTWARE\Microsoft\Edge"
# 存在しないキーの場合は$False
Test-Path -LiteralPath "HKLM:\SOFTWARE\Microsoft_x\Edge"
# エントリーを含めていはいけない。以下はエントリが存在してもFalseになる
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy"
オプションの説明:
-Path ワイルドカードを受け付けることができる。
-LiteralPath 記述されたとおりに使用されます。ワイルドカードとして解釈される文字はありません。パスにエスケープ文字が含まれる場合は、単一引用符で囲みます。
更新
・エントリー値の更新
#エントリー値の更新
Set-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name 'v1' -Value 999
#ワイルドカードも可能 \Hoge\x\以下のにS1のエントリーがあれば上書き
Set-ItemProperty -Path 'HKCU:\Hoge\x\*' -Name s1 -Value "123"
#存在しないエントリーの場合はエントリーが新規に作られる
Set-ItemProperty -Path 'HKCU:\Hoge\x\y' -Name s99 -Value "123"
・エントリ名の更新
# エントリーの更新
Rename-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name x2 -NewName newX2
・キー名の更新
# キーの更新
Rename-Item -LiteralPath 'HKCU:\Hoge\x\y' -NewName newC
削除
削除は危険なので注意してください
・キーの削除
# 子の要素がある場合は確認メッセージが表示される
Remove-Item -LiteralPath 'HKCU:\Hoge\x'
# 確認なしで削除 -Recurseオプションを付与した場合は確認なしで削除します
Remove-Item -LiteralPath 'HKCU:\Hoge\x' -Recurse
・エントリーの削除
# エントリ削除
Remove-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y' -Name v2
# エントリを2つ消す
Remove-ItemProperty -LiteralPath 'HKCU:\Hoge\x\y','HKCU:\Hoge\z'
#PowerShell #コマンドレット #プログラミング学習 #プログラミング入門
#レジストリ #Windows #IT
この記事が気に入ったらサポートをしてみませんか?