Functions/registry.ps1
function Set-RegistryValue( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] [string]$regKeyPath, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNullOrEmpty()] [string]$regValueName, [Parameter(Mandatory = $true, Position = 2)] [ValidateNotNullOrEmpty()] [string]$regValue, [Parameter(Position = 3)] [string] $registryName = "Registry" ) { $result = Get-RegistryValue $regKeyPath $regValueName if ($result -eq $null) { Write-Warning "${registryName}: Creating Key '${regValueName}' value '${regValue}'" Set-ItemProperty -Path $regKeyPath -Name ${regValueName} -Value $regValue } else { Write-Warning "${registryName}: Key '${regValueName}' already exists with value '${result}'" } } # Gets the specified registry value or $null if it is missing function Get-RegistryValue( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] [string] $path, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNullOrEmpty()] [string] $name) { $key = Get-Item -LiteralPath $path -ErrorAction SilentlyContinue if ($key) { $key.GetValue($name, $null) } } $envCurrentUserPath = "HKCU:\Environment" $envLocalMachinePath = "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" function Set-EnvironmentVar( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] [string]$name, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNullOrEmpty()] [string]$regValue, [Parameter(Position = 2)] [ValidateSet("user", "machine")] [string] # environment variable type: user, or machine. Default is 'user' $variableType = 'user' ) { $environmentPath = $envCurrentUserPath if ($variableType -ceq 'machine') { $environmentPath = $envLocalMachinePath } Set-RegistryValue $environmentPath $name $regValue "Environment Variable" } function Get-EnvironmentVar( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $name, [ValidateSet("user", "machine")] [string] # environment variable type: user, or machine. Default is 'user' $variableType = 'user' ) { $environmentPath = $envCurrentUserPath if ($variableType -ceq 'machine') { $environmentPath = $envLocalMachinePath } return Get-RegistryValue $environmentPath $name } function Set-LocalMachineRunOnceVar( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] [string]$name, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNullOrEmpty()] [string]$regValue ) { $localMachineRunOncePath = "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce" Set-RegistryValue $localMachineRunOncePath $name $regValue "LocalMachine: RunOnce Variable" } |