-Тип свойства задается как DWord, но при создании элемента он отображается как строка

#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, вы получите сообщение об ошибке.