見出し画像

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


この記事が気に入ったらサポートをしてみませんか?