update
This commit is contained in:
52
NRPE/Check_wsus_critical_updates.ps1
Normal file
52
NRPE/Check_wsus_critical_updates.ps1
Normal file
@ -0,0 +1,52 @@
|
||||
# This is a little basic script I have written to query a WSUS server
|
||||
# about the updates needed by the system.
|
||||
#
|
||||
# It will only return a Critical status if there are any Critical Security Updates,
|
||||
# or Critical Updates waiting to be applied.
|
||||
#
|
||||
# I by no mean pretend to be a profesionnal scripter, so feel free
|
||||
# to modify as you see fit!
|
||||
#
|
||||
# Written by: Alexandre Beauclair
|
||||
# Date: April 12th 2012
|
||||
|
||||
#Declaring base variables. You can change the $wsusserver value if needed.
|
||||
$wsusserver = "localhost"
|
||||
$securityCritical = 0
|
||||
$criticalUpdates = 0
|
||||
|
||||
#Load required assemblies
|
||||
|
||||
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
|
||||
|
||||
#Create necessary objects
|
||||
|
||||
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($wsusserver,$False)
|
||||
$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
|
||||
|
||||
#Specify we are looking for updates which are Not Approved, and Not Installed.
|
||||
|
||||
$updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::NotApproved
|
||||
$updatescope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled
|
||||
|
||||
#Find how many updates are available.
|
||||
|
||||
$checkSecurityCritical = $wsus.GetUpdates($updatescope) | where {$_.UpdateClassificationTitle -eq "Security Updates"} | ft MsrcSeverity -AutoSize | FIND /c " Critical"
|
||||
$checkCriticalUpdates = $wsus.GetUpdates($updatescope) | where {$_.UpdateClassificationTitle -eq "Critical Updates"} | ft UpdateClassificationTitle | FIND /c "Critical Updates"
|
||||
|
||||
$securityCritical += $checkSecurityCritical
|
||||
$criticalUpdates += $checkCriticalUpdates
|
||||
|
||||
|
||||
#Return message and exit code accordingly.
|
||||
|
||||
if(($securityCritical -gt 0) -or ($criticalUpdates -gt 0)){
|
||||
Write-Host "CRITICAL - There are updates waiting to be applied. Critical Updates: $criticalUpdates Critical Security Updates: $securityCritical"
|
||||
exit 2
|
||||
}else{
|
||||
Write-Host "OK - There are no critical updates waiting to be applied."
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user