plugins/Invoke-IcingaCheckUptime.psm1
<# .SYNOPSIS Checks how long a Windows system has been up for. .DESCRIPTION InvokeIcingaCheckUptime returns either 'OK', 'WARNING' or 'CRITICAL', based on the thresholds set. e.g 'C:\Users\Icinga\Backup' the system has been running for 10 days, WARNING is set to 15d, CRITICAL is set to 30d. In this case the check will return OK. More Information on https://github.com/Icinga/icinga-powershell-plugins .FUNCTIONALITY This module is intended to check how long a Windows system has been up for. Based on the thresholds set the status will change between 'OK', 'WARNING' or 'CRITICAL'. The function will return one of these given codes. .EXAMPLE PS> Invoke-IcingaCheckUptime -Warning 18d -Critical 20d [WARNING]: Check package "Windows Uptime: Days: 19 Hours: 13 Minutes: 48 Seconds: 29" is [WARNING] | 'Windows Uptime'=1691309,539176s;1555200;1728000 .EXAMPLE PS> Invoke-IcingaCheckUptime -Warning 25d: [WARNING] Check package "System Uptime: 22d 16h 42m 35s" - [WARNING] System Uptime \_ [WARNING] System Uptime: Value "1960955.28s" is lower than threshold "2160000s" | 'system_uptime'=1960955.28s;2160000:; 1 .PARAMETER Warning Used to specify a Warning threshold. In this case a string. Allowed units include: ms, s, m, h, d, w, M, y .PARAMETER Critical Used to specify a Critical threshold. In this case a string. Allowed units include: ms, s, m, h, d, w, M, y .INPUTS System.String .OUTPUTS System.String .LINK https://github.com/Icinga/icinga-powershell-plugins .NOTES #> function Invoke-IcingaCheckUptime() { param( [string]$Warning = $null, [string]$Critical = $null, [switch]$NoPerfData, [ValidateSet(0, 1, 2, 3)] [int]$Verbosity = 0 ); $WindowsData = Get-IcingaWindows; $Name = ([string]::Format('System Uptime: {0}', (ConvertFrom-TimeSpan -Seconds $WindowsData.windows.metadata.uptime.value))); $IcingaCheck = New-IcingaCheck -Name 'System 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 $Verbosity; return (New-IcingaCheckresult -Check $CheckPackage -NoPerfData $NoPerfData -Compile); } |