Hey all,
I’ve got some issues with a custom made script, which simplifies adjusting registry values.
First let me show you the function:
function Create-Location { [CmdletBinding[]] Param[ # Param1 help description [Parameter[Mandatory=$true]] [String]$LiteralPath, # Param2 help description [Parameter[Mandatory=$false]] [String]$Name, # Param3 help description [String]$Value, # Param4 help description [String]$PropertyType ] if[![Test-Path -Path $LiteralPath]] { $Caption = "Please confirm:" $Message = "$Literalpath does not exist. Do you want to create it?" [int]$DefaultChoice = 0 $Yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Do the job." $No = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "Do not do the job." $Options = [System.Management.Automation.Host.ChoiceDescription[]][$Yes, $No] $ChoiceRTN = $host.ui.PromptForChoice[$Caption,$Message, $Options,$DefaultChoice] if [ $choiceRTN -ne 1 ] {New-Item -Path $LiteralPath -Force} else {} } If[$Name] { Write-Host "Set-Location -LiteralPath $LiteralPath" Set-Location -LiteralPath $LiteralPath Write-Host "New-ItemProperty -Path `".\`" -Name $Name -Value $Value -PropertyType $PropertyType –Force" New-ItemProperty -Path '.\' -Name $Name -Value $Value -PropertyType $PropertyType –Force } $LiteralPath = $null $Name = $null $Value = $null $PropertyType = $null }
Now, with this function, I can easily adjust bulk values of registry data like this:
Create-Location -LiteralPath 'HKCU:\Software\Something' -Name 'Something' -Value 'Something' -PropertyType "DWord"
And this is working fine for most registry entries and values, except for this one:
Create-Location -LiteralPath 'HKCU:\Control Panel\Desktop' -Name 'UserPreferencesMask' -PropertyType Binary -Value [[byte[]] [0x90,0x12,0x03,0x80,0x0A,0x10,0x00,0x00]]
No matter what I’ve tried, it just won’t accept the byte value with the use of the Create-Location function.
Strangely enough, when I use it the “old-fashion” way, it works.
Set-Location -LiteralPath 'HKCU:\Control Panel\Desktop' New-ItemProperty -Path '.' -Name 'UserPreferencesMask' -Value [[byte[]] [0x90,0x12,0x03,0x80,0x0A,0x10,0x00,0x00]] -PropertyType "Binary" -Force
I’ve tried putting the value into a variable in numerous ways, but it’s only accepted with the New-ItemProperty method.
At this point, Ive ran out of ideas…
Is there some mistake I’m making in the format of the function?
If anyone here knows a solution, I’d be happy to hear it from you!
Thanks and regards,
T.O.