Установите для ключа двоичного реестра значение GUID с помощью конфигурации желаемого состояния Powershell или Powershell

Нам было поручено обновить раздел реестра REG_BINARY с использованием значения GUID, но мы хотим сделать это с помощью PowerShell или PowerShell DSC, чтобы это можно было автоматизировать. Конечный результат должен выглядеть так:

Для ключа REG_BINARY задано значение GUID

Поскольку это шестнадцатеричное представление GUID:

GUID: {01234567-89AB-CDEF-0123-456789ABCDEF}
Hex:  67-45-23-01-AB-89-EF-CD-01-23-45-67-89-AB-CD-EF

person Greg Bray    schedule 29.01.2016    source источник


Ответы (1)


Следующее создаст новый двоичный ключ с помощью PowerShell.

$value = [guid]::Parse('01234567-89AB-CDEF-0123-456789ABCDEF')
$path = 'HKLM:Software\Company\Product'
New-ItemProperty -Path $path -Name MyGUIDKey -PropertyType Binary -Value $value.ToByteArray()

Если ключ уже существует, вы можете обновить его значение, заменив последнюю строку на

Set-ItemProperty -Path $path -Name MyGUIDKey -Value $value.ToByteArray()

Если вы хотите создать или обновить их ключ с помощью PowerShell DSC, ваша конфигурация должна выглядеть так:

Registry SetBinaryKeyToGuidValue
{
    Key = 'HKEY_LOCAL_MACHINE\Software\Company\Product'
    ValueName = 'MyGUIDKey'
    ValueData =  @([BitConverter]::ToString([guid]::Parse('01234567-89AB-CDEF-0123-456789ABCDEF').ToByteArray()).Replace("-", [String]::Empty))
    ValueType = 'Binary'
}

ValueData очень точно определяет, какой формат используется, и это должен быть массив шестнадцатеричных строк, например: @ ('001122FF'). Если вы используете любой другой формат, вы получите сообщение об ошибке, например:

Ресурсу PowerShell DSC MSFT_RegistryResource не удалось выполнить функцию Set-TargetResource с сообщением об ошибке: (ОШИБКА) Параметр ValueData имеет недопустимое значение 01234567-89AB-CDEF-0123-456789ABCDEF для типа Binary

person Greg Bray    schedule 29.01.2016