Похоже, что Microsoft удалила этот раздел реестра в Server 2016.
HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ WindowsUpdate \ Auto Update \ Results \ Install
Кто-нибудь знает эквивалентный раздел реестра, в котором указана дата / время последней успешной установки Центра обновления Windows? Или, возможно, другой метод запроса этого значения?
Я часами гуглил, но ничего не нашел. Ближайший ключ реестра, который я могу найти, это:
HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ WindowsUpdate \ AU
Однако у него нет ключа для последней успешной даты / времени установки.
Протестировано, и находка этого парня сработала:
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)
...
Конечно, вы можете просто вынуть описание и заголовки, если вам просто нужна сама дата.
Я использую:
Invoke-Command -ComputerName $ComputerName -ScriptBlock { (New-Object -com "Microsoft.Update.AutoUpdate").Results.LastInstallationSuccessDate} -ErrorAction SilentlyContinue
Вы можете использовать журнал событий установки. Что-то вроде этого?
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 году.