2013-04-22 35 views
7

Đối với ứng dụng cũ, tôi cần tạo khóa đăng ký có tên theo định dạng c:/foo/bar/baz. (Lưu ý: dấu gạch chéo về phía trước, không phải dấu gạch chéo ngược.) Để rõ ràng: đó là tên của một khóa, với dấu gạch chéo về phía trước, nếu không sẽ trông giống như một đường dẫn Windows. Bởi vì tôi cần phải viết kịch bản này với nhiều máy chủ, PowerShell có vẻ như là một lựa chọn tuyệt vời.Tạo khóa đăng ký với các thành phần đường dẫn qua PowerShell

Vấn đề là tôi không thể tìm ra cách tạo khóa trong định dạng đó thông qua PowerShell. New-Item -Path HKLM:\SOFTWARE\Some\Key -Name 'c:/foo/bar/baz' lỗi với PowerShell nghĩ rằng tôi đang sử dụng / làm dấu tách đường dẫn và không tìm thấy đường dẫn HKLM:\Software\Some\Key\c:\foo\bar, thực sự không tồn tại (và không nên). Tôi không thể tìm thấy bất kỳ cách nào khác để (ab) sử dụng New-Item để có được những gì tôi muốn.

Có điều gì tôi thiếu hoặc tôi nên từ bỏ và chỉ tạo và tải đăng ký kết xuất theo cách cũ?

Trả lời

11

Bạn cần làm hai việc. Trước tiên, bạn cần có đối tượng RegistryKey có thể ghi, nếu không bạn không thể sửa đổi bất cứ điều gì. Thứ hai, sử dụng phương thức CreateSubKey trực tiếp trên đối tượng RegistryKey.

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

Sau khi bạn tạo khóa, bạn sử dụng đối tượng kết quả để thêm giá trị cho nó.

+1

Tôi nghĩ FogBugz có các phím như thế này, nhưng dấu gạch chéo đi theo cách khác: http://i42.tinypic.com/154jzac.jpg –

+0

@DannyTuppeny Bạn đoán phần mềm, nhưng chúng thực sự chuyển tiếp dấu gạch chéo trong bản gốc của tôi câu hỏi. PowerShell chỉ sử dụng thực tế là các đường dẫn UNC xử lý "\" và "/" giống hệt nhau để làm cho cuộc sống của tôi gây phiền nhiễu. –

+0

@BenjaminPollack Rất tiếc, đã không đọc câu hỏi đúng cách! Có vẻ như tính năng "hữu ích" này có thể làm cho nó không thể làm nguyên bản. Bạn có thể gọi ra. NET, nhưng rõ ràng đó không phải là lý tưởng :-( –