Question:
I am trying to find a way of retrieving the date/time of which the last windows update was either installed, or checked for.
So far I have found a function that allows to list recent Windows Updates, but it is far too much data and too bloated for such a simple function. Secondly I have tried to access the registry although I am having no luck in retriving the value I am after.
I am testing this on a Windows 10 Machine although the software will probably reside on Windows Server 2012 R2.
Here is an example of some of the code I have tried:
1 2 3 4 5 6 7 8 |
$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") |
Also, just trying the Get-ChildItem
1 2 3 4 5 6 7 8 |
$hello = Get-ChildItem -Path “hkcu:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\” foreach ($a in $hello) { $a } |
I’ve checked in regedit and this key does not exist. Going to the “Windows Update” path shows only App Updates and not Windows updates.
EDIT
I seem to be closer to my goal with this line:
Get-HotFix | Where {$_.InstallDate -gt 30}
However how to I only retrive those of which have been installed in the last 30 days? And this doesnt show many results, even using Select $_.InstallDate
Answer:
an option :
1 2 |
gwmi win32_quickfixengineering |sort installedon -desc |
Another alternative, using the com object Microsoft.Update.Session can be find here : https://p0w3rsh3ll.wordpress.com/2012/10/25/getting-windows-updates-installation-history/
in short :
1 2 3 4 5 6 |
$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 {$_} |