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.