【问题标题】:Why is Powershell's Get-ItemProperty not returning the same values as seen in regedit.exe?为什么 Powershell 的 Get-ItemProperty 没有返回与 regedit.exe 中相同的值?
【发布时间】:2018-12-06 06:00:20
【问题描述】:

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

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

Get-ItemProperty:

regedit.exe:

注意DefaultUserName是在regedit.exe中查看时设置的

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

感谢任何帮助。

【问题讨论】:

标签: windows azure powershell registry virtual-machine


【解决方案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 导出注册表项并查看文件中生成的路径。

【讨论】:

  • 很好的回应,谢谢。 reg.exe query & Get-ItemProperty 在 Powershell 中具有相同的值。然而,Registry Editor GUI 则完全不同。我观察到这只发生在“2016 Datacenter”Azure 映像的latest 版本中。使用以前的版本,没有问题。
猜你喜欢
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 2015-11-07
相关资源
最近更新 更多