# encoding: ascii # api: powershell # title: Set-RemoteRegistryKeyPro # description: From Windows PowerShell Cookbook (O’Reilly) by Lee Holmes # version: 0.1 # author: Lee Holmes # license: CC0 # x-poshcode-id: 2222 # x-archived: 2016-03-18T23:48:20 # x-published: 2011-09-09T21:42:00 # # ############################################################################## ## ## Set-RemoteRegistryKeyProperty ## ## From Windows PowerShell Cookbook (O'Reilly) ## by Lee Holmes (http://www.leeholmes.com/guide) ## ############################################################################## <# .SYNOPSIS Set the value of a remote registry key property .EXAMPLE PS >$registryPath = "HKLM:\software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" PS >Set-RemoteRegistryKeyProperty LEE-DESK $registryPath ` "ExecutionPolicy" "RemoteSigned" #> param( ## The computer to connect to [Parameter(Mandatory = $true)] $ComputerName, ## The registry path to modify [Parameter(Mandatory = $true)] $Path, ## The property to modify [Parameter(Mandatory = $true)] $PropertyName, ## The value to set on the property [Parameter(Mandatory = $true)] $PropertyValue ) Set-StrictMode -Version Latest ## Validate and extract out the registry key if($path -match "^HKLM:\\(.*)") { $baseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey( "LocalMachine", $computername) } elseif($path -match "^HKCU:\\(.*)") { $baseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey( "CurrentUser", $computername) } else { Write-Error ("Please specify a fully-qualified registry path " + "(i.e.: HKLM:\Software) of the registry key to open.") return } ## Open the key and set its value $key = $baseKey.OpenSubKey($matches[1], $true) $key.SetValue($propertyName, $propertyValue) ## Close the key and base keys $key.Close() $baseKey.Close()