From 49b1beee5a8a2df07342b1ba374553a10c946a2d Mon Sep 17 00:00:00 2001 From: Lord Hepipud Date: Mon, 19 Aug 2019 18:14:29 +0200 Subject: [PATCH] Added Pending Windows Update check --- lib/plugins/Invoke-IcingaCheckUpdates.psm1 | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/plugins/Invoke-IcingaCheckUpdates.psm1 diff --git a/lib/plugins/Invoke-IcingaCheckUpdates.psm1 b/lib/plugins/Invoke-IcingaCheckUpdates.psm1 new file mode 100644 index 0000000..7fd3cf4 --- /dev/null +++ b/lib/plugins/Invoke-IcingaCheckUpdates.psm1 @@ -0,0 +1,54 @@ +Import-IcingaLib icinga\plugin; +Import-IcingaLib provider\updates; + +function Invoke-IcingaCheckUpdates() +{ + param ( + [array]$UpdateFilter, + $Warning, + $Critical, + [switch]$NoPerfData, + [int]$Verbose + ); + + $PendingUpdates = Get-IcingaUpdatesPending; + + $UpdateCount = New-IcingaCheckPackage -Name 'Pending Update Count' -OperatorAnd; + $UpdateList = New-IcingaCheckPackage -Name 'Update List' -OperatorAnd; + $PendingCount = 0; + + if ($UpdateFilter.Count -ne 0) { + foreach ($Filter in $UpdateFilter) { + foreach ($Update in $PendingUpdates.updates.Keys) { + if ($Update -Like $Filter) { + $PendingCount += 1; + $UpdateList.AddCheck( + (New-IcingaCheck -Name $Update -Value 'pending' -NoPerfData) + ); + } + } + } + if ($PendingCount -eq 0) { + $UpdateList.AddCheck( + (New-IcingaCheck -Name 'No update' -Value 'pending' -NoPerfData) + ); + } + } else { + $PendingCount = $PendingUpdates.count; + foreach ($Update in $PendingUpdates.updates.Keys) { + $UpdateList.AddCheck( + (New-IcingaCheck -Name $Update -Value 'pending' -NoPerfData) + ); + } + } + + $IcingaCheck = New-IcingaCheck -Name 'Pending Update Count' -Value $PendingCount; + $IcingaCheck.WarnOutOfRange($Warning).CritOutOfRange($Critical) | Out-Null; + $UpdateCount.AddCheck($IcingaCheck); + + $UpdatePackage = New-IcingaCheckPackage -Name 'Updates' -OperatorAnd -Verbose $Verbose -Checks @( + $UpdateCount, $UpdateList + ); + + exit (New-IcingaCheckResult -Name 'Pending Updates' -Check $UpdatePackage -NoPerfData $NoPerfData -Compile); +}