为什么Powershell的Get-ItemProperty不返回与regedit.exe中相同的值?

时间:2018-12-06 06:00:21

标签: windows azure powershell registry virtual-machine

我正在设置一台用于测试的计算机,其中一部分正在修改一些注册表值。这是一个Azure VM,我正在通过Powershell对其进行配置。

我注意到从Get-ItemProperty返回的注册表值(在Powershell中)与在regedit.exe中看到的注册表值之间存在许多差异。下面是一个这样的差异的示例:

Get-ItemProperty

  

enter image description here

regedit.exe

  

enter image description here

DefaultUserName中查看时设置了注释regedit.exe

我正在使用New-ItemProperty(带有-Force参数)设置这些属性。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我暂时没有答案,但是有一些想法可以尝试。

使用命令行列出所有键

reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

使用PowerShell列出所有键

(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\").PSObject.Properties | where-object name -notlike PS* | Format-Table Name, value

这应该使您更容易比较PowerShell生成的结果和命令行生成的结果。

要计算PowerShell中的条目数

((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\").PSObject.Properties | where-object name -notlike PS*).count

我已经针对2种不同的笔记本电脑进行了测试,没有发现任何差异。

我已经针对4种不同的Azure VM进行了测试,没有发现任何差异。

如果要创建新的注册表项,我将重新启动PowerShell控制台,然后再次检索注册表项。只是为了确保。

否则,您应该考虑从regedit.exe导出注册表项,并查看文件中生成的路径。