function Set-RegistryKeyValue { <# .SYNOPSIS Set a registry key value .DESCRIPTION Create or sets registry key value given a path, type and value. .EXAMPLE Set-RegistryKeyValue -regKey HKCU:\Environment\foo\bar -regkeyValueData '666' -regKeyValueType DWORD -Verbose #> [cmdletbinding()] param ( $regKey, $regkeyValueData, $regKeyValueType ) $logLead = (Get-LogLeadName) $regKeyName = Split-Path $regKey -Parent $regKeyValue = Split-Path $regKey -Leaf if (Test-RegistryKey $regKeyName) { Write-Verbose "$logLead : Creating Registry Key $regKey" $regKeyResult = New-ItemProperty -Path $regKeyName -Name $regKeyValue -Value $regkeyValueData -PropertyType $regKeyValueType -Force Write-Verbose "$logLead : Registry key value set to $regKey." } else { throw "$logLead : Registry key ($regKeyName) does not exist." } if ($regKeyResult.$regKeyValue -eq $regKeyValueData) { Write-Verbose "$logLead : Successfully set registry value to $regKeyValueData." return $true } else { Write-Warning "$logLead : Failed to set registry value." return $false } }