Powershell 2.0 如何从远程注册表“\..\WindowsUpdate\Auto Update\RebootRequired”获取值

Powershell 2.0 how to get the values from remote registry "\..\WindowsUpdate\Auto Update\RebootRequired"

我正在尝试查询远程服务器的注册表路径:

"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"

这包含等待重启的所有更新的列表 (REG_DWORD),也许还有一些日期。我只对待更新的数量感兴趣。

执行以下 PS cmdlet,我在查询 reg 路径时没有得到预期的结果:

       $Computer = "Server01" 
       $HKLM = [UInt32] "0x80000002" 
       $WMI_Reg = [WMIClass] “\$Computer\root\default:StdRegProv” 
       $RegRR = $WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired")

$RegRR = 
__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     : 
__DYNASTY        : __PARAMETERS
__RELPATH        : 
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         : 
__NAMESPACE      : 
__PATH           : 
ReturnValue      : 0
sNames           : 

但是,作为测试,如果我在此之前查询路径一键,排除“\RebootRequired”,那么这有效,然后我可以查询 sValues。

$RegRR = $WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     : 
__DYNASTY        : __PARAMETERS
__RELPATH        : 
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         : 
__NAMESPACE      : 
__PATH           : 
ReturnValue      : 0
sNames           : {Power, RequestedAppCategories, Results, RebootRequired...}

最后,我希望查询此注册表项,以便 return 返回等待重新启动的更新数量,现有 DWORD 记录。有一个 RebootRequiredSince 日期,起初可能有用,但发现并非我们所有的服务器都有这个(2008 R2 和 2012 的混合)。

有什么想法吗?

谢谢

确保你在目标机器上启用了RemoteRegistry服务,然后你可以试试:

$Computer = "RemoteComputerName"
$RootKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$Computer)
$SubKey = $RootKey.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired")

要获取所有可用值,您可以执行以下操作:

$SubKey.GetValueNames()

获取所有子项名称:

$SubKey.GetSubKeyNames()

获取特定值:

$SubKey.GetValue("ValueName")

获取默认键值:

$SubKey.GetValue($null)