diff --git a/lib/plugins/Invoke-IcingaCheckUptime.psm1 b/lib/plugins/Invoke-IcingaCheckUptime.psm1 new file mode 100644 index 0000000..78f685e --- /dev/null +++ b/lib/plugins/Invoke-IcingaCheckUptime.psm1 @@ -0,0 +1,27 @@ +Import-IcingaLib icinga\plugin; +Import-IcingaLib provider\windows; +Import-IcingaLib core\tools; + +function Invoke-IcingaCheckUptime() +{ + param( + $Warning, + $Critical, + [switch]$NoPerfData, + [int]$Verbose + ); + + $WindowsData = Get-IcingaWindows; + $Name = ([string]::Format('Windows Uptime: {0}', (ConvertFrom-TimeSpan -Seconds $WindowsData.windows.metadata.uptime.value))); + + $IcingaCheck = New-IcingaCheck -Name 'Windows Uptime' -Value $WindowsData.windows.metadata.uptime.value -Unit 's'; + $IcingaCheck.WarnOutOfRange( + (ConvertTo-SecondsFromIcingaThresholds -Threshold $Warning) + ).CritOutOfRange( + (ConvertTo-SecondsFromIcingaThresholds -Threshold $Critical) + ) | Out-Null; + + $CheckPackage = New-IcingaCheckPackage -Name $Name -OperatorAnd -Checks $IcingaCheck -Verbose $Verbose; + + exit (New-IcingaCheckresult -Check $CheckPackage -NoPerfData $NoPerfData -Compile); +}