For a legacy application, I need to create a registry key with a name in the format c:/foo/bar/baz
. (Note: forward slashes, not backslashes.) To be clear: that is a single key's name, with forward slashes, that otherwise looks like a Windows path. Because I need to script this against lots of servers, PowerShell seems like a great option.
The problem is that I cannot figure out how to create a key in that format via PowerShell. New-Item -Path HKLM:\SOFTWARE\Some\Key -Name 'c:/foo/bar/baz'
errors out with PowerShell thinking I'm using /
as a path separator and failing to find the path HKLM:\Software\Some\Key\c:\foo\bar
, which does indeed not exist (and shouldn't). I can't find any other way to (ab)use New-Item
to get what I want.
Is there something I'm missing, or should I give up and just generate and load a registry dump the old-fashioned way?
You need to do two things. First you need to get a writable
RegistryKey
object, otherwise you can't modify anything anyway. Second, use theCreateSubKey
method on theRegistryKey
object directly.After you create the key you use the resulting object to add values to it.