2014-11-03 15 views
12

Tạo một giá trị registry, trong đó có con đường lên đến nó, và không erroring nếu con đường đã tồn tại rất dễ dàng sử dụng reg.exe cũ-học:PowerShell tạo đường dẫn đăng ký một lớp lót?

reg add HKCU\Software\Policies\Microsoft\Windows\EdgeUI /f /v DisableHelpSticker /t reg_sz /d 1 

Đó là tốt đẹp và súc tích. Cách ngắn nhất mà tôi tìm thấy để thực hiện nó trong PowerShell thuần túy là hai dòng, hoặc ba dòng nếu bạn không muốn lặp lại đường dẫn:

$regPath = 'HKCU:\Software\Policies\Microsoft\Windows\EdgeUI' 
New-Item $regPath -Force | Out-Null 
New-ItemProperty $regPath -Name DisableHelpSticker -Value 1 -Force | Out-Null 

Có cách nào dễ dàng hơn bằng PowerShell tinh khiết? Và không thêm chức năng tiện ích.

+0

không quan trọng, nhưng bạn có thể ngăn chặn lỗi xảy ra khi khóa tồn tại bằng cách kiểm tra đường dẫn trước tiên. Xem phần 'if -not test-path' của câu trả lời này. http://stackoverflow.com/a/26707878/3093031 –

+0

Đúng vậy. Nhưng sau đó nó thậm chí còn lớn hơn. Tôi đang sử dụng '-ErrorAction SilentlyContinue' hoặc' -Force' để tránh lỗi. – Vimes

+0

Đây là một loại dealbreaker cho tôi liên quan đến powershell: ( – hl3mukkel

Trả lời

13

Bạn có thể ống dòng tạo vào dòng New-ItemProperty như sau, nhưng lưu ý rằng các -Force cờ trên New-Item sẽ xóa bất kỳ nội dung tồn tại từ trước của khóa:

New-Item 'HKCU:\Software\Policies\Microsoft\Windows\EdgeUI' -Force | New-ItemProperty -Name DisableHelpSticker -Value 1 -Force | Out-Null 
+2

Tôi vừa học được rằng cờ '-Force' của New-Item sẽ thổi bay tất cả các khóa/giá trị của mục mới.' -SilentlyContinue' không lấy được đối tượng. Tôi đang cố gắng nghĩ một cách dễ dàng cách để đặt giá trị không phá hủy, tạo p nếu nó không tồn tại, trong một dòng không có "nếu khóa tồn tại ..." loại điều. Bởi vì đó là nhận được ngớ ngẩn cho một lót. Hãy cho tôi biệt nếu bạn có ý tưởng gì đó. – Vimes

+0

Bạn có thể sử dụng 'Test-Path' để kiểm tra sự tồn tại của khóa trước khi cố gắng tạo ra nó, nếu nó tồn tại kiểm tra tài sản. Sẽ có giá trị đưa vào một chức năng nếu bạn đang làm nó nhiều lần. – arco444

+0

Tôi bắt đầu nghĩ rằng đó là tùy chọn để "che phủ" dữ liệu vào sổ đăng ký và không có lớp lót đẹp nào. – Vimes

0

Xin lỗi vì đã Rez chết chủ đề nhưng tại sao không chỉ

New-ItemProperty -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\EdgeUI -Name DisableHelpSticker -Value Contoso -Force | Out-Null 

Tôi đang sử dụng tính năng này cho một số nội dung SCCM và nó không ghi đè mục nhập reg hiện tại của tôi.

+2

Lệnh này sẽ không tạo 'HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ EdgeUI' nếu nó không tồn tại và bất kể việc sử dụng | Out-Null, lỗi sẽ vẫn được hiển thị ở bảng điều khiển. – ALIENQuake

+0

Ahh, không thấy 'và con đường dẫn đến nó'. – Benny

Các vấn đề liên quan