# Logon Errors # # # Quick script to check logon errors since last check. Problem with the logon # errors performance counter is it reports logon errors since last reboot, and # the value cannot be cleared. This script is most useful with Nagios. # Initialize values $WarningThreshold = 5 $CriticalThreshold = 10 $z if (Test-Path C:\logon_errors.txt) { $z = Get-Counter "\Server\Errors Logon" | Select -ExpandProperty "CounterSamples" } else { New-Item C:\logon_errors.txt -type file -force | Out-Null } [decimal]$former = get-content C:\logon_errors.txt $current = $z.CookedValue # Write the current logon errors reading to file $current > C:\logon_errors.txt # If we have readings for both the current and former logon error values, process accordingly if ($former -And $current) { if ($current -lt $former) { # Logon errors went down. The server probably rebooted. Write-Host "WARNING - Logon errors counter reset. This system has probably rebooted." exit 1 } elseif ($current -ge $former) { # Logon errors may have gone up. The real magic happens here. $difference = $current - $former if ($difference -ge $CriticalThreshold) { Write-Host "CRITICAL - Logon errors have exceeded the critical threshold for this check interval." exit 2 } elseif ($difference -ge $WarningThreshold) { Write-Host "WARNING - Logon errors have exceeded the warning threshold for this check interval." exit 1 } else { Write-Host "OK - Logon errors below warning threshold for this check interval." exit 0 } } else { # Something must have gone awry if we wind up here. Write-Host "UNKNOWN - Could not check logon errors for this interval." exit 3 } # If not, just report normal status } elseif ($current) { # Just report Write-Host "OK - Logon errors below warning threshold for this check interval." exit 0 } else { # Probably shouldn't arrive here, means something bad happened. Write-Host "UNKNOWN - Could not check logon errors for this interval." exit 3 }
Hello,
I am new to powershell scripting. I was asked to see why the script above fails with the default pre-defined error message of “UNKNOWN – Could not check logon errors for this interval.”.
When I try to execute the commmands one at a time (to see where it breaks), it seems that I hit an error near the start with the following command…$z = Get-Counter “\Server\Errors Logon” | Select -ExpandProperty “CounterSamples”
Any helps or suggestions would be appreciated. Thank you.