2013-04-22 13 views
7

W przypadku starszej aplikacji potrzebuję utworzyć klucz rejestru o nazwie w formacie c:/foo/bar/baz. (Uwaga: ukośniki, a nie ukośniki.) Aby było jasne: jest to nazwa pojedynczego klucza, z ukośnikami, które inaczej wyglądają jak ścieżka Windows. Ponieważ muszę skryptować to na wielu serwerach, PowerShell wydaje się świetną opcją.Tworzenie klucza rejestru z komponentami ścieżki za pomocą PowerShell

Problem polega na tym, że nie mogę wymyślić, jak utworzyć klucz w tym formacie za pomocą PowerShell. New-Item -Path HKLM:\SOFTWARE\Some\Key -Name 'c:/foo/bar/baz' błędy z myśleniem PowerShell Używam / jako separatora ścieżek i nie znajduję ścieżki HKLM:\Software\Some\Key\c:\foo\bar, która rzeczywiście nie istnieje (i nie powinna). Nie mogę znaleźć innego sposobu, aby (ab) użyć New-Item, aby uzyskać to, czego chcę.

Czy jest coś, czego mi brakuje, czy powinienem zrezygnować i po prostu wygenerować i załadować zrzut rejestru w staroświecki sposób?

Odpowiedz

11

Musisz zrobić dwie rzeczy. Najpierw musisz uzyskać zapisywalny obiekt RegistryKey, w przeciwnym razie i tak nic nie możesz zmodyfikować. Po drugie, użyj bezpośrednio metody obiektu CreateSubKey na obiekcie RegistryKey.

$writable = $true 
$key = (get-item HKLM:\).OpenSubKey("SOFTWARE", $writable).CreateSubKey("C:/test") 
$key.SetValue("Item 1", "Value 1") 

Po utworzeniu klucza uzyskuje się obiekt wynikowy w celu dodania do niego wartości.

+1

Myślałem, że FogBugz ma klucze takie jak to, ale przecięcia idą w drugą stronę: http://i42.tinypic.com/154jzac.jpg –

+0

@DannyTuppeny Zgadłeś oprogramowanie, ale w rzeczywistości są to ukośniki w moim oryginale pytanie. PowerShell wykorzystuje tylko to, że ścieżki UNC traktują "\" i "/" w identyczny sposób, aby moje życie było denerwujące. –

+0

@BenjaminPollack Oops, nie przeczytałem poprawnie pytania! Wydaje się, że ta "pomocna" funkcja może uniemożliwić zrobienie tego w sposób natywny. Możesz zadzwonić do .NET, ale oczywiście nie jest to idealne :-( –

Powiązane problemy