DSC-Resource: How can I delete a registry key (not value)?
I know I can ensure the presens of a specific registry value by using the following scriptblock:
Registry ConfigureRegistry
{
Ensure = 'Present'
Key = 'HKEY_LOCAL_MACHINE\SOFTWARE\SomeKey'
ValueName = 'MachineType'
ValueData = 'Hyper-V'
}
But how can I delete the registry key SomeKey
? If I only change the keyword Ensure = "Present"
to Ensure = "Absent"
it will leave the key SomeKey
...
Solution 1:
This is now possible, see VertigoRay's answer.
This isn't possible at the moment with the Registry
resource, as you've discovered.
You can use a Script
resource or write a full custom resource instead.
Solution 2:
This is possible, as documented:
To add or remove a registry key, specify [ValueName] as an empty string without specifying ValueType or ValueData.
Example
Registry ConfigureRegistry
{
Ensure = 'Absent'
Key = 'HKEY_LOCAL_MACHINE\SOFTWARE\SomeKey'
ValueName = ''
}
PSDrives also work:
Registry ConfigureRegistry
{
Ensure = 'Absent'
Key = 'HKLM:\SOFTWARE\SomeKey'
ValueName = ''
}