#powershell #if-statement #scripting #try-catch #registry
#powershell #if-оператор #сценарии #попробуйте-поймайте #реестр
Вопрос:
Мой код:
try {
if(!(Test-Path -Path $registryPath -Value $Name)) {
New-ItemProperty -Name test -Path HKLM:SoftwareWOW6432NodeMozilla -PropertyType DWord -Value 2
}
}
catch {
Set-ItemProperty -Path $registryPath -Name $Name -Value $value
}
Моя проблема: результат отображается в виде строки.
Я попытался изменить -PropertyType
на -Type
.
Я попытался изменить заголовок слова DWord
.
Любая помощь будет принята с благодарностью.
Комментарии:
1. Почему сначала вы жестко указываете имя свойства
test
, а затем в блоке catch вы используете переменную$Name
? Кроме того, свойство, похоже, уже существует, и в этом случае вы никогда не дойдете доNew-ItemProperty ...
строки.
Ответ №1:
Как говорится в документах: вы также используете Set-ItemProperty для создания и изменения значений и данных реестра. Например, вы можете добавить новую запись реестра к ключу и установить или изменить его значение.
С помощью Set-ItemProperty также можно изменить тип записи реестра, скажем, со значения REG_SZ (string) на DWord, так что в основном все, что вам нужно, это:
$registryPath = 'HKLM:SoftwareWOW6432NodeMozilla'
$propName = 'test'
Set-ItemProperty -Path $registryPath -Name $propName -Value 2 -Type DWord
Конечно, если у вас нет разрешений на создание или изменение чего-либо в пути реестра HKEY_LOCAL_MACHINE, вы получите сообщение об ошибке.