要通过Powershell访问Windows机器中的注册表或对其进行更改,我看到两种方法
cd HKLM:\
(或set-location -path HKLM:\ SOFTWARE \ Microsoft \ Windows \ CurrentVersion)
Get-childitem
要么
Get-Item -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Get-ItemProperty , New-ItemProperty , Set-ItemProperty
什么时候使用另一个?
它们都是必需的,因为无法在Item
对象上访问属性值(并且无法通过ItemProperty
命令看到嵌套的“子”容器项)。
我的2c:注册表提供者是由某人作为演示编写的,然后交付使用,现在他们害怕更改它……这是解释整个“ ItemProperty”内容的唯一方法。
基本上,当他们将注册表映射到PowerShell Provider语义时,只有容器,并且每个容器都具有属性(和/或子容器),而不是具有“容器”和“叶”项。
因此,如果您Get-ChildItem HKCU:\SOFTWARE\Microsoft
收到响应,则会列出每个子容器的“名称”(注册表编辑器(Regedit.exe)将其显示为文件夹),并在“属性”标题下列出其中的值-但是清单完全在显示中,并且Property
您返回的对象上的字段实际上只是一个列出属性名称的字符串数组,因此您知道下一步可以做什么:
Get-ItemProperty
Set-ItemProperty
New-ItemProperty
例如,在您的示例中,您可能会看到SecurityHealth:
但这就像上面的屏幕截图一样,作为人类,您可以看到该值,但是您的脚本无法读取该值...
您必须使用Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
取回一个对象,该对象实际上具有SecurityHealth
带有C:\WINDOWS\System32\SecurityHealthSystray.exe
值的属性...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句