如何确定在 Windows Server 2016 上最近成功运行的 Windows 更新的日期和时间?

如何确定在 Windows Server 2016 上最近成功运行的 Windows 更新的日期和时间?

看来微软在 Server 2016 中删除了此注册表项。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\自动更新\结果\安装

是否有人知道具有上次 Windows Update 安装成功日期/时间的等效注册表项?或者可能是查询此值的其他方法?

我花了几个小时在谷歌上搜索,但一无所获。我能找到的最接近的注册表项是:

HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

但是,它没有上次成功安装日期/时间的密钥。

答案1

经过测试,这个家伙的发现确实有效:

Get-WmiObject -Class win32_reliabilityRecords -filter "sourcename = 'Microsoft-
Windows-WindowsUpdateClient'" -ErrorAction SilentlyContinue |
select @{LABEL = "date";EXPRESSION = {$_.ConvertToDateTime($_.timegenerated)}}, 
@{LABEL = 'Update';EXPRESSION = {$_.message}} |
FT -AutoSize -Wrap

给你一个很好的总结:

date                 Update
----                 ------
8/18/2017 8:39:51 AM Installation Successful: Windows successfully installed 
the following update: 2017-08 Cumulative Update for Windows Server 2016 for 
x64-based Systems (KB4034658)
...

当然,如果您只想要日期本身,您可以只删除描述和标题。

https://www.experts-exchange.com/questions/28713293/How-to-get-last-success-date-time-of-Windows-Update-on-Windows-10.html

https://blogs.technet.microsoft.com/heyscriptingguy/2011/08/22/use-powershell-to-easily-find-information-about-hotfixes/

答案2

我用:

    Invoke-Command -ComputerName  $ComputerName -ScriptBlock { (New-Object -com "Microsoft.Update.AutoUpdate").Results.LastInstallationSuccessDate} -ErrorAction SilentlyContinue

请注意,时间是 UTC。

答案3

您可以使用设置事件日志。类似这样的吗?

Get-WinEvent -LogName Setup | where{$_.message -match "success"} | select -First 1

我通常会检查最近安装的事件,如下所示:

Get-WinEvent -LogName Setup -MaxEvents 5 | Format-Table Machinename,Timecreated,Message -A -Wr

我确实测试过了并且它在 2016 年也有效。

答案4

Windows 2016 和 2019 中的 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\LastDownloadsPurgeTime

这将允许您了解上次安装的日期,这是唯一具有这些新版本的东西

相关内容