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)
我正在尝试查询远程服务器的注册表路径:
"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)