对于遗留应用程序,我需要创建一个名称格式为c:/foo/bar/baz
的注册表项。 (注意:正斜杠,而不是反斜杠。)要清楚:这是一个单词的名称,带有正斜杠,否则看起来像一个Windows路径。因为我需要针对许多服务器编写脚本,所以PowerShell似乎是一个很好的选择。
问题在于我无法弄清楚如何通过PowerShell以该格式创建密钥。 PowerShell认为New-Item -Path HKLM:\SOFTWARE\Some\Key -Name 'c:/foo/bar/baz'
错误我认为我使用/
作为路径分隔符而未能找到确实不存在(并且不应该存在)的路径HKLM:\Software\Some\Key\c:\foo\bar
。我找不到任何其他方法(ab)使用New-Item
来获得我想要的东西。
我有什么遗漏,或者我应该放弃,只是以老式的方式生成和加载注册表转储?
答案 0 :(得分:12)
你需要做两件事。首先,您需要获取可写RegistryKey
对象,否则无论如何都无法修改任何内容。其次,直接在CreateSubKey
对象上使用RegistryKey
方法。
$writable = $true
$key = (get-item HKLM:\).OpenSubKey("SOFTWARE", $writable).CreateSubKey("C:/test")
$key.SetValue("Item 1", "Value 1")
创建密钥后,使用生成的对象为其添加值。