我正在尝试找到一种方法来检索安装或检查最后一次Windows更新的日期/时间。
到目前为止,我已经找到了一个允许列出最近的Windows更新的函数,但是对于这样一个简单的函数来说,数据太多而且太过膨胀。其次,我试图访问注册表,虽然我没有运气重新获得我追求的价值。
我在Windows 10计算机上测试它,尽管该软件可能驻留在Windows Server 2012 R2上。
以下是我尝试过的一些代码示例:
$key = “SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install”
$keytype = [Microsoft.Win32.RegistryHive]::LocalMachine
$RemoteBase = [Microsoft.Win32.RegistryKey]::OpenBaseKey($keytype,"My Machine")
$regKey = $RemoteBase.OpenSubKey($key)
$KeyValue = $regkey.GetValue(”LastSuccessTime”)
$System = (Get-Date -Format "yyyy-MM-dd hh:mm:ss")
另外,只需尝试Get-ChildItem
$hello = Get-ChildItem -Path “hkcu:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\”
foreach ($a in $hello) {
$a
}
我已经检查过regedit并且此密钥不存在。转到“Windows Update”路径仅显示应用更新,而不显示Windows更新。
EDIT 我似乎更接近我的目标: Get-HotFix |其中{$ _。InstallDate -gt 30}
但是,我如何只追回过去30天内安装的那些?即使使用Select $_.InstallDate
答案 0 :(得分:9)
一个选项:
gwmi win32_quickfixengineering |sort installedon -desc
另一种选择,使用com对象 Microsoft.Update.Session 可以在这里找到:https://p0w3rsh3ll.wordpress.com/2012/10/25/getting-windows-updates-installation-history/ 简而言之:
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$HistoryCount = $Searcher.GetTotalHistoryCount()
# http://msdn.microsoft.com/en-us/library/windows/desktop/aa386532%28v=vs.85%29.aspx
$Searcher.QueryHistory(0,$HistoryCount) | ForEach-Object {$_}
答案 1 :(得分:3)
Get-HotFix |?{$_.InstalledOn -gt ((Get-Date).AddDays(-30))}
答案 2 :(得分:0)
在这里您将如何在Powershell的一行中了解上一次Windows更新的日期和时间:
(New-Object -com "Microsoft.Update.AutoUpdate"). Results | fl
您还可以使用以下脚本在Windows Server中进行大量检查:
$ servers = Get-ADComputer -Filter {(OperatingSystem-like "* windows * server *") -and (Enabled -eq "True")} -Properties OperatingSystem | Sort Name | select -Unique Name
foreach ($ server in $ servers) {
write-host $ server.Name
Invoke-Command -ComputerName $ server.Name -ScriptBlock {
(New-Object -com "Microsoft.Update.AutoUpdate"). Results}
}
摘自:https://www.sysadmit.com/2019/03/windows-update-ver-fecha-powershell.html