plugins/Invoke-IcingaCheckNetworkInterface.psm1
<# .SYNOPSIS Checks availability, state and Usage of Network interfaces and Interface Teams .DESCRIPTION This plugin checks availability, status and load of a network adapter. It is also equipped with various parameters, so you have the possibility to decide almost everything by yourself, when the single checks have to be Warning or Critical. For the Team-Members Physical adapters no Performance Counter are displayed. .ROLE ### WMI Permissions * root\Cimv2 * root\StandardCimv2 .PARAMETER IncludeNetworkDevice Specify the index of network adapters you want to include for checks. Example 4, 3 .PARAMETER ExcludeNetworkDevice Specify the index of network adapters you want to exclude for checks. Example 4, 3 .PARAMETER IncludeInterfaceTeam Specify the name of network interface teams you want to include for checks. Example OutboundGroup, ClusterInterface .PARAMETER ExcludeInterfaceTeam Specify the name of network interface teams you want to exclude for checks. Example OutboundGroup, ClusterInterface .PARAMETER IncludeHidden Set this argument if you want to include hidden network Adapter for checks. It is a network which is available but is not broadcasting its ID. .PARAMETER PacketReceivedSecWarn Warning threshold for network Interface Packets Received/sec is the rate at which packets are received on the network interface. .PARAMETER PacketReceivedSecCrit Critical threshold for network Interface Packets Received/sec is the rate at which packets are received on the network interface. .PARAMETER PacketSentSecWarn Warning threshold for network Interface Packets Sent/sec is the rate at which packets are sent on the network interface. .PARAMETER PacketSentSecCrit Critical threshold for network Interface Packets Sent/sec is the rate at which packets are sent on the network interface. .PARAMETER PackteReceivedErrorWarn Warning threshold for network Interface Packets Received Errors is the number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol. .PARAMETER PackteReceivedErrorCrit Critical threshold for network Interface Packets Received Errors is the number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol. .PARAMETER PackteOutboundErrorWarn Warning threshold for network Interface Packets Outbound Errors is the number of outbound packets that could not be transmitted because of errors. .PARAMETER PackteOutboundErrorCrit Critical threshold for network Interface Packets Outbound Errors is the number of outbound packets that could not be transmitted because of errors. .PARAMETER PacketReceivedDiscardedWarn Warning threshold for network Interface Packets Received Discarded is the number of inbound packets that were chosen to be discarded even though no errors had been detected to prevent their delivery to a higher-layer protocol. .PARAMETER PacketReceivedDiscardedCrit Critical threshold for network Interface Packets Received Discarded is the number of inbound packets that were chosen to be discarded even though no errors had been detected to prevent their delivery to a higher-layer protocol. .PARAMETER PacketOutboundDiscardedWarn Warning threshold for network Interface Packets Outbound Discarded is the number of outbound packets that were chosen to be discarded even though no errors had been detected to prevent transmission. .PARAMETER PacketOutboundDiscardedCrit Critical threshold for network Interface Packets Outbound Discarded is the number of outbound packets that were chosen to be discarded even though no errors had been detected to prevent transmission. .PARAMETER IncomingAvgBandUsageWarn Warning threshold for network Interface avg. Bytes Received/sec is the average of incoming Bytes. .PARAMETER IncomingAvgBandUsageCrit Critical threshold for network Interface avg. Bytes Received/sec is the average of incoming Bytes. .PARAMETER OutboundAvgBandUsageWarn Warning threshold for network Interface avg. Bytes Sent/sec is the average of outbound Bytes. .PARAMETER OutboundAvgBandUsageCrit Critical threshold for network Interface avg. Bytes Sent/sec is the average of outbound Bytes. .PARAMETER DeviceTotalBytesSecWarn Warning threshold for network Interface Bytes Total/sec is the rate at which bytes are sent and received over each network adapter, including framing characters. .PARAMETER DeviceTotalBytesSecCrit Critical threshold for network Interface Bytes Total/sec is the rate at which bytes are sent and received over each network adapter, including framing characters. .PARAMETER DeviceSentBytesSecWarn Warning threshold for network Interface Bytes Sent/sec is the rate at which bytes are sent over each network adapter, including framing characters. .PARAMETER DeviceSentBytesSecCrit Critical threshold for network Interface Bytes Sent/sec is the rate at which bytes are sent over each network adapter, including framing characters. .PARAMETER DeviceReceivedBytesSecWarn Warning threshold for network Interface Bytes Received/sec is the rate at which bytes are received over each network adapter, including framing characters. .PARAMETER DeviceReceivedBytesSecCrit Critical threshold for network Interface Bytes Received/sec is the rate at which bytes are received over each network adapter, including framing characters. .PARAMETER LinkSpeedWarn Warning threshold for the transmit link speed in (10 MBit, 100 MBit, 1 GBit, 10 GBit, 100 GBit, ...) of the network Interface. .PARAMETER LinkSpeedCrit Critical threshold for the transmit link speed in (10 MBit, 100 MBit, 1 GBit, 10 GBit, 100 GBit, ...) of the network Interface. .PARAMETER IfTeamStatusWarn Warning threshold for the Status of a network Interface Teams. .PARAMETER IfTeamStatusCrit Critical threshold for the Status of a network Interface Teams. .PARAMETER IfSlaveEnabledStateWarn Warning threshold for the State of a network Interface Team-Members/Slaves. .PARAMETER IfSlaveEnabledStateCrit Critical threshold for the State of a network Interface Team-Members/Slaves. .PARAMETER IfAdminStatusWarn Warning threshold for the network Interface administrative status. .PARAMETER IfOperationalStatusWarn Warning threshold for the current network interface operational status. .Parameter IfOperationalStatusCrit Critical threshold for the current network interface operational status. .PARAMETER IfConnectionStatusWarn Warning threshold for the state of the network adapter connection to the network. .PARAMETER IfConnectionStatusCrit Critical threshold for the state of the network adapter connection to the network. .PARAMETER NoPerfData Disables the performance data output of this plugin .PARAMETER Verbosity Changes the behavior of the plugin output which check states are printed: 0 (default): Only service checks/packages with state not OK will be printed 1: Only services with not OK will be printed including OK checks of affected check packages including Package config 2: Everything will be printed regardless of the check state .EXAMPLE PS> icinga { Invoke-IcingaCheckNetworkInterface -Verbosity 2 } [OK] Check package "Network Device Package" (Match All) \_ [OK] Check package "Interface Ethernet" (Match All) \_ [OK] #1 AdminLocked: False \_ [OK] #1 bytes received/sec: 3691.900146B \_ [OK] #1 bytes sent/sec: 324.831177B \_ [OK] #1 bytes total/sec: 3994.609619B \_ [OK] #1 Interface AdminStatus: Up \_ [OK] #1 Interface OperationalStatus: Up \_ [OK] #1 LinkSpeed: 1 GBit \_ [OK] #1 NetConnectionStatus: Connected \_ [OK] #1 packets avg. incoming traffic load: 0% \_ [OK] #1 packets avg. outbound traffic load: 0% \_ [OK] #1 packets outbound discarded: 0 \_ [OK] #1 packets outbound errors: 0 \_ [OK] #1 packets received discarded: 0 \_ [OK] #1 packets received errors: 0 \_ [OK] #1 packets received/sec: 6.467305 \_ [OK] #1 packets sent/sec: 1.659066 \_ [OK] #1 VlanID: | '1_packets_outbound_discarded'=0;; '1_packets_receivedsec'=6.467305;; '1_bytes_receivedsec'=3691.900146B;; '1_packets_received_errors'=0;; '1_packets_sentsec'=1.659066;; '1_bytes_sentsec'=324.831177B;; '1_packets_avg_incomming_traffic_load'=0%;;;0;100 '1_packets_received_discarded'=0;; '1_packets_avg_outbound_traffic_load'=0%;;;0;100 '1_packets_outbound_errors'=0;; '1_bytes_totalsec'=3994.609619B;; 0 .LINK https://github.com/Icinga/icinga-powershell-framework https://github.com/Icinga/icinga-powershell-plugins https://icinga.com/docs/windows/latest/doc/01-Introduction/ #> function Invoke-IcingaCheckNetworkInterface() { param ( [array]$IncludeNetworkDevice = @(), [array]$ExcludeNetworkDevice = @(), [array]$ExcludeInterfaceTeam = @(), [array]$IncludeInterfaceTeam = @(), $PacketReceivedSecWarn = $null, $PacketReceivedSecCrit = $null, $PacketSentSecWarn = $null, $PacketSentSecCrit = $null, $PackteReceivedErrorWarn = $null, $PackteReceivedErrorCrit = $null, $PackteOutboundErrorWarn = $null, $PackteOutboundErrorCrit = $null, $PacketReceivedDiscardedWarn = $null, $PacketReceivedDiscardedCrit = $null, $PacketOutboundDiscardedWarn = $null, $PacketOutboundDiscardedCrit = $null, $IncomingAvgBandUsageWarn = $null, $IncomingAvgBandUsageCrit = $null, $OutboundAvgBandUsageWarn = $null, $OutboundAvgBandUsageCrit = $null, $DeviceTotalBytesSecWarn = $null, $DeviceTotalBytesSecCrit = $null, $DeviceSentBytesSecWarn = $null, $DeviceSentBytesSecCrit = $null, $DeviceReceivedBytesSecWarn = $null, $DeviceReceivedBytesSecCrit = $null, $LinkSpeedWarn, $LinkSpeedCrit, [ValidateSet('Up', 'Down', 'Degraded')] $IfTeamStatusWarn, [ValidateSet('Up', 'Down', 'Degraded')] $IfTeamStatusCrit, [ValidateSet('Unknown', 'Other', 'Enabled', 'Disabled', 'ShuttingDown', 'NotApplicable', 'EnabledButOffline', 'InTest', 'Deferred', 'Quiesce', 'Starting')] $IfSlaveEnabledStateWarn, [ValidateSet('Unknown', 'Other', 'Enabled', 'Disabled', 'ShuttingDown', 'NotApplicable', 'EnabledButOffline', 'InTest', 'Deferred', 'Quiesce', 'Starting')] $IfSlaveEnabledStateCrit, [ValidateSet('Up', 'Down', 'Testing')] $IfAdminStatusWarn, [ValidateSet('Up', 'Down', 'Testing', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown')] $IfOperationalStatusWarn, [ValidateSet('Up', 'Down', 'Testing', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown')] $IfOperationalStatusCrit, [ValidateSet('Disconnected', 'Connecting', 'Connected', 'Disconnecting', 'HardwareNotPresent', 'HardwareDisabled', 'HardwareMalfunction', 'MediaDisconnected', 'Authenticating', 'AuthenticationSucceeded', 'AuthenticationFailed', 'InvalidAddress', 'CredentialsRequired', 'Other')] $IfConnectionStatusWarn, [ValidateSet('Disconnected', 'Connecting', 'Connected', 'Disconnecting', 'HardwareNotPresent', 'HardwareDisabled', 'HardwareMalfunction', 'MediaDisconnected', 'Authenticating', 'AuthenticationSucceeded', 'AuthenticationFailed', 'InvalidAddress', 'CredentialsRequired', 'Other')] $IfConnectionStatusCrit, [switch]$IncludeHidden = $FALSE, [switch]$NoPerfData, [ValidateSet(0, 1, 2)] $Verbosity = 0 ); $NetworkDevices = Join-IcingaNetworkDeviceDataPerfCounter -NetworkDeviceCounter @( '\Network Interface(*)\packets received/sec', '\Network Interface(*)\packets sent/sec', '\Network Interface(*)\packets received errors', '\Network Interface(*)\packets outbound errors', '\Network Interface(*)\packets received discarded', '\Network Interface(*)\packets outbound discarded', '\Network Interface(*)\bytes total/sec', '\Network Interface(*)\bytes received/sec', '\Network Interface(*)\bytes sent/sec' ) ` -IncludeNetworkDevice $IncludeNetworkDevice ` -ExcludeNetworkDevice $ExcludeNetworkDevice ` -ExcludeInterfaceTeam $ExcludeInterfaceTeam ` -IncludeInterfaceTeam $IncludeInterfaceTeam ` -IncludeHiddenNetworkDevice:$IncludeHidden; $CheckPackage = New-IcingaCheckPackage -Name 'Network Device Package' -OperatorAnd -Verbose $Verbosity; $InterfaceTeamsPackage = New-IcingaCheckPackage -Name 'Interface Teams' -OperatorAnd -Verbose $Verbosity; $HiddenCheckPackage = New-IcingaCheckPackage -Name 'Hidden PerfData Package' -Hidden; foreach ($NetworkDevice in $NetworkDevices.Keys) { $NetworkDeviceObject = $NetworkDevices[$NetworkDevice]; # If we have no data, skip this object if ($null -eq $NetworkDeviceObject.Data) { continue; } # Define a basic set of variables to use for naming and easier handling $CheckPackageName = ''; $InterfaceTeamName = ''; $InterfaceName = ''; [bool]$IsNetworkTeam = $FALSE; # If we are a team object, setup our variables differently with other naming tags if ((($NetworkDeviceObject.Data.ContainsKey('TeamingMode')) -eq $TRUE) -And ($NetworkDeviceObject.Data.ContainsKey('Team'))) { $CheckPackageName = ([string]::Format('Team {0}', $NetworkDeviceObject.Data.Name)); $InterfaceTeamName = $NetworkDeviceObject.Data.Name; $InterfaceName = $InterfaceTeamName; $IsNetworkTeam = $TRUE; } else { # In case are simple interfaces, initialise them with other names $CheckPackageName = ([string]::Format('Interface {0}', $NetworkDeviceObject.Data.Name)); $InterfaceName = ([string]::Format('eth {0}', $NetworkDeviceObject.Data.Index)); } # Create a new package we add all our performance metrics and interface data into $NetworkEntryCheckPackage = New-IcingaCheckPackage -Name $CheckPackageName -OperatorAnd -Verbose $Verbosity; # At first add all performance counters $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets received/sec', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['packets received/sec'].value ` ).WarnOutOfRange( $PacketReceivedSecWarn ).CritOutOfRange( $PacketReceivedSecCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets sent/sec', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['packets sent/sec'].value ` ).WarnOutOfRange( $PacketSentSecWarn ).CritOutOfRange( $PacketSentSecCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets received errors', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['packets received errors'].value ).WarnOutOfRange( $PackteReceivedErrorWarn ).CritOutOfRange( $PackteReceivedErrorCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets outbound errors', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['packets outbound errors'].value ).WarnOutOfRange( $PackteOutboundErrorWarn ).CritOutOfRange( $PackteOutboundErrorCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets received discarded', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['packets received discarded'].value ).WarnOutOfRange( $PacketReceivedDiscardedWarn ).CritOutOfRange( $PacketReceivedDiscardedCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets outbound discarded', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['packets outbound discarded'].value ).WarnOutOfRange( $PacketOutboundDiscardedWarn ).CritOutOfRange( $PacketOutboundDiscardedCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets avg. outbound traffic load', $InterfaceName)) ` -Value ( Get-IcingaInterfaceAverageBandWidthUsage ` -AverageTrafficBytes ($NetworkDeviceObject.PerfCounter['bytes sent/sec'].value) ` -TotalBandwidth $NetworkDeviceObject.Data.TransmitLinkSpeed ) ` -Unit '%' ).WarnOutOfRange( $OutboundAvgBandUsageWarn ).CritOutOfRange( $OutboundAvgBandUsageCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: packets avg. incoming traffic load', $InterfaceName)) ` -Value ( Get-IcingaInterfaceAverageBandWidthUsage ` -AverageTrafficBytes ($NetworkDeviceObject.PerfCounter['bytes received/sec'].value) ` -TotalBandwidth $NetworkDeviceObject.Data.TransmitLinkSpeed ) ` -Unit '%' ).WarnOutOfRange( $IncomingAvgBandUsageWarn ).CritOutOfRange( $IncomingAvgBandUsageCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: bytes total/sec', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['bytes total/sec'].value ` -Unit 'B' ).WarnOutOfRange( $DeviceTotalBytesSecWarn ).CritOutOfRange( $DeviceTotalBytesSecCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: bytes sent/sec', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['bytes sent/sec'].value ` -Unit 'B' ).WarnOutOfRange( $DeviceSentBytesSecWarn ).CritOutOfRange( $DeviceSentBytesSecCrit ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: bytes received/sec', $InterfaceName)) ` -Value $NetworkDeviceObject.PerfCounter['bytes received/sec'].value ` -Unit 'B' ).WarnOutOfRange( $DeviceReceivedBytesSecWarn ).CritOutOfRange( $DeviceReceivedBytesSecCrit ) ); # Add VLAN Id to system if present $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: VlanID', $InterfaceName)) ` -Value $NetworkDeviceObject.Data.VlanID ` -NoPerfData ) ); # Add the checks for our interface link speed and performance metrics $LinkChecks = Get-IcingaNetworkSpeedChecks -Name $InterfaceName -LinkSpeed $NetworkDeviceObject.Data.TransmitLinkSpeed -LinkSpeedWarning $LinkSpeedWarn -LinkSpeedCritical $LinkSpeedCrit; $NetworkEntryCheckPackage.AddCheck($LinkChecks.CheckLinkSpeed); $HiddenCheckPackage.AddCheck($LinkChecks.PerfDataLinkSpeed); # Add specific check content which only applies to network teams if ($IsNetworkTeam) { $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: Teaming Mode', $InterfaceName)) ` -Value $NetworkDeviceObject.Data.TeamingMode ` -Translation $ProviderEnums.TeamingMode ` -NoPerfData ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: Status', $InterfaceName)) ` -Value $NetworkDeviceObject.Data.Status ` -Translation $ProviderEnums.InterfaceTeamStatus ` -NoPerfData ).WarnIfMatch( $ProviderEnums.InterfaceTeamStatusName[[string]$IfTeamStatusWarn] ).CritIfMatch( $ProviderEnums.InterfaceTeamStatusName[[string]$IfTeamStatusCrit] ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: Members', $InterfaceName)) ` -Value ($NetworkDeviceObject.Data.Members.Count) ` -NoPerfData ) ); # We need to take care about the members of our team foreach ($InterfaceMember in $NetworkDeviceObject.Data.Slave.Keys) { $TeamMember = $NetworkDeviceObject.Data.Slave[$InterfaceMember]; $TeamMemberPackage = New-IcingaCheckPackage -Name ([string]::Format('Interface {0} (Team: {1})', $TeamMember.Name, $TeamMember.Team)) -OperatorAnd -Verbose $Verbosity; $TeamMemberPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: Administrative Mode', $TeamMember.Name)) ` -Value $TeamMember.AdministrativeMode ` -Translation $ProviderEnums.AdministrativeMode ` -NoPerfData ).WarnIfMatch( $ProviderEnums.AdministrativeModeName.Standby ) ); $OperationalModeCheck = New-IcingaCheck ` -Name ([string]::Format('{0}: Operational Mode', $TeamMember.Name)) ` -Value $TeamMember.OperationalMode ` -Translation $ProviderEnums.OperationalMode ` -NoPerfData; if ($TeamMember.OperationalMode -eq $ProviderEnums.OperationalModeName.Active -or $ProviderEnums.OperationalModeName.Standby) { $TeamMemberPackage.AddCheck($OperationalModeCheck); } else { $OperationalModeCheck.SetCritical() | Out-Null; $TeamMemberPackage.AddCheck($OperationalModeCheck); } $TeamMemberPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: Enabled State', $TeamMember.Name)) ` -Value $TeamMember.EnabledState ` -Translation $ProviderEnums.SlaveEnabledState ` -NoPerfData ).WarnIfMatch( $ProviderEnums.SlaveEnabledStateName[[string]$IfSlaveEnabledStateWarn] ).CritIfMatch( $ProviderEnums.SlaveEnabledStateName[[string]$IfSlaveEnabledStateCrit] ) ); # Add the checks for our interface link speed and performance metrics $LinkChecks = Get-IcingaNetworkSpeedChecks -Name $TeamMember.Name -LinkSpeed $TeamMember.TransmitLinkSpeed -LinkSpeedWarning $LinkSpeedWarn -LinkSpeedCritical $LinkSpeedCrit; $TeamMemberPackage.AddCheck($LinkChecks.CheckLinkSpeed); $HiddenCheckPackage.AddCheck($LinkChecks.PerfDataLinkSpeed); $CheckPackage.AddCheck($TeamMemberPackage); } $InterfaceTeamsPackage.AddCheck($NetworkEntryCheckPackage); } else { # All remaining data for regular interfaces not part of a team $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: AdminLocked', $InterfaceName)) ` -Value $NetworkDeviceObject.Data.AdminLocked ` -NoPerfData ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: Interface AdminStatus', $InterfaceName)) ` -Value $NetworkDeviceObject.Data.InterfaceAdminStatus ` -Translation $ProviderEnums.InterfaceAdminStatus ` -NoPerfData ).WarnIfMatch( $ProviderEnums.InterfaceAdminStatusName[[string]$IfAdminStatusWarn] ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: Interface OperationalStatus', $InterfaceName)) ` -Value $NetworkDeviceObject.Data.InterfaceOperationalStatus ` -Translation $ProviderEnums.InterfaceOperationalStatus ` -NoPerfData ).WarnIfMatch( $ProviderEnums.InterfaceOperationalStatusName[[string]$IfOperationalStatusWarn] ).CritIfMatch( $ProviderEnums.InterfaceOperationalStatusName[[string]$IfOperationalStatusCrit] ) ); $NetworkEntryCheckPackage.AddCheck( ( New-IcingaCheck ` -Name ([string]::Format('{0}: NetConnectionStatus', $InterfaceName)) ` -Value $NetworkDeviceObject.Data.NetConnectionStatus ` -Translation $ProviderEnums.NetConnectionStatus ` -NoPerfData ).WarnIfMatch( $ProviderEnums.NetConnectionStatusName[[string]$IfConnectionStatusWarn] ).CritIfMatch( $ProviderEnums.NetConnectionStatusName[[string]$IfConnectionStatusCrit] ) ); $CheckPackage.AddCheck($NetworkEntryCheckPackage); } } if ($InterfaceTeamsPackage.HasChecks()) { $CheckPackage.AddCheck($InterfaceTeamsPackage); } if ($HiddenCheckPackage.HasChecks()) { $CheckPackage.AddCheck($HiddenCheckPackage); } return (New-IcingaCheckResult -Check $CheckPackage -NoPerfData $NoPerfData -Compile); } |