Windows Serverを扱っていると、レジストリ設定をする事が良くあります。
REG コマンドで操作しても良いのですが、なんか呪文ポイので個人的には好きじゃなかったり...
やはりここは
PowerShell ですよねww
よく使うので、レジストリの追加/更新を PowerShell 関数にしました。
# ------------------------------
# $RegKeyTypeに設定する値
# "String"
# "ExpandString"
# "Binary"
# "DWord"
# "MultiString"
# "QWord"
# ------------------------------
# $RegPath で指定するルートキー
#
HKEY_LOCAL_MACHINE → HKLM:
# HKEY_CURRENT_USER → HKCU:
#
HKEY_CURRENT_CONFIG → HKCC:
# HKEY_CLASSES_ROOT → HKCR:
# HKEY_USERS →
HKU:
# ------------------------------
# 使用例
# $RegPath =
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
# $RegKey
= "HideFileExt"
# $RegKeyType = "DWord"
# $RegKeyValue = 0
# RegSet
$RegPath $RegKey $RegKeyType $RegKeyValue
# ------------------------------
# MultiString 使うときはこんな感じで値を指定
# $RegKeyType = "MultiString"
# $RegKeyValue
= "aaaaaa", "bbbb", "cccc"
# ------------------------------
# Binary 使うときはこんな感じで値を指定
# $RegKeyType = "Binary"
# $RegKeyValue = @()
# $RegKeyValue += [byte]0x00
# $RegKeyValue += [byte]0x15
#
------------------------------
# default で HKLM: HKCU: 以外のルートキーが割り当てされていないので割り当てておきます
New-PSDrive -Name HKCC -PSProvider Registry -Root HKEY_CURRENT_CONFIG
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
### レジストリ追加/更新 function RegSet( $RegPath, $RegKey, $RegKeyType, $RegKeyValue ){ # レジストリそのものの有無確認 $Elements = $RegPath -split "\\" $RegPath = "" $FirstLoop = $True foreach ($Element in $Elements ){ if($FirstLoop){ $FirstLoop = $False } else{ $RegPath += "\" } $RegPath += $Element if( -not (test-path $RegPath) ){ echo "Add Registry : $RegPath" md $RegPath } } # Key有無確認 $Result = Get-ItemProperty $RegPath -name $RegKey -ErrorAction SilentlyContinue # キーがあった時 if( $Result -ne $null ){ Set-ItemProperty $RegPath -name $RegKey -Value $RegKeyValue } # キーが無かった時 else{ # キーを追加する New-ItemProperty $RegPath -name $RegKey -PropertyType $RegKeyType -Value $RegKeyValue } Get-ItemProperty $RegPath -name $RegKey } |
Copyright © MURA All rights reserved.