powershell - 如何使用 powershell 检查我的计算机的 Windows 更新是否已过期超过 30 天

标签 powershell windows-update

我正在测试我的计算机的 Windows 更新是否已超过 30 天,如果超过,则会弹出一条消息警告用户。

有人可以帮我测试一下日期吗,因为无论如何,它似乎都会给我相同的结果:您的 WINDOWS 更新已更新

我认为我需要更改日期的格式才能根据 Get-Date 结果进行测试?

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

$DateTimeNow = Get-Date
$Daysback = "-31" 
$Updatedate = $_.ConvertToDateTime

if ($DateTimeNow.AddDays($Daysback) -lt $Updatedate.InstalledOn.Date) {
    $wshell = New-Object -ComObject Wscript.Shell

    $wshell.Popup("***WARNING***YOUR WINDOWS UPDATES ARE OVER A MONTH OUT OF 
    DATE. PLEASE CONTACT  IT", 0, " Windows Update Check", 0x1)
}
else {
    $wshell = New-Object -ComObject Wscript.Shell

    $wshell.Popup("YOUR WINDOWS UPDATES ARE IN DATE", 0, " Windows 
    Update Check", 0x1)
}

最佳答案

这应该有效:

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

$DateTimeNow = Get-Date
$Daysback = -31

if($LastUpdate.Date -lt $DateTimeNow.AddDays($Daysback)){
    $wshell = New-Object -ComObject Wscript.Shell
    $wshell.Popup("***WARNING***YOUR WINDOWS UPDATES ARE OVER A MONTH OUT OF DATE. PLEASE CONTACT  IT",0," Windows Update Check",0x1)
} else {
    $wshell = New-Object -ComObject Wscript.Shell
    $wshell.Popup("YOUR WINDOWS UPDATES ARE IN DATE",0," Windows Update Check",0x1)
}

更改:

  • 您没有将 Get-WmiObject 调用的结果返回到变量,然后测试始终为空的 $Updatedate
  • 您的日期逻辑需要颠倒过来。

关于powershell - 如何使用 powershell 检查我的计算机的 Windows 更新是否已过期超过 30 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45060327/

相关文章:

powershell - 将数组内容写入foreach

Azure订阅: using Certificate or AAD authentication on PowerShell?

postgresql - Postgres ODBC 驱动模块

powershell - 如何使用 Azure 自动化运行存储过程?

powershell - 搜索帐户时获得更好的性能

Windows 更新 GDR 与 LDR (QFE)

c# - Windows 更新破坏了 .Net 4.x 中的结构构造

asp.net-mvc - 如何处理从 ASP MVC 版本 4.0.0.0 到 4.0.0.1 的转换

asp.net-mvc - 安装 KB2993928 后 ASP.NET MVC4 解决方案无法构建

set - OpenEdge 10.2A - INPUT THROUGH 设置在 Windows 10 上的 Windows Update 1703 后不起作用