我正在测试我的计算机的 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/