Check_MK中PowerShell登录用户检测脚本显示UNKN状态求助
Windows Server登录用户检测脚本在Check_MK中异常问题
问题概述
我有一个基于qwinsta命令的PowerShell脚本,用于检测Windows Server的登录用户。该脚本在Nagios/NRPE环境及Windows服务器本地执行均正常,但部署到Check_MK后无法正常工作。将脚本复制到%ProgramData%\agent\local目录后,Check_MK服务器能扫描到该脚本,但服务状态显示为UNKN(check failed - please submit a crash report!)。
脚本内容
登录用户数据提取逻辑
(qwinsta.exe) | findstr /v Disc | findstr /v Conn | findstr /v Listen | foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv | findstr.exe USERNAME > C:\temp\users.txt
Nagios输出预处理部分
(Get-Content C:\temp\users.txt) -replace 'USERNAME', '' -replace ':','' | Set-Content C:\temp\users.txt $lines = Get-Content C:\Temp\users.txt $var=($lines|group|?{$_.count -ge 1}|Select -ExpandProperty Name) -join ","
状态判断与输出模块(怀疑问题根源)
if ($LoggedOnUsers -lt 1){ $NagiosStatus = "0" Write-Host "No users are logged on" } else { if (($Today -like "Saturday" -OR $Today -like "Sunday") -AND ($LoggedOnUsers -eq 1)) { $NagiosStatus = "2" if ($LoggedOnUsers -eq 1) { Write-Host "$LoggedOnUsers user logged on: $var" } else { Write-Host "$LoggedOnUsers users logged on: $var" } } else { if (($now -lt $max) -AND ($now -gt $min)) { $NagiosStatus = "1" if ($LoggedOnUsers -eq 1) { Write-Host "$LoggedOnUsers user logged on: $var " } else { Write-Host "$LoggedOnUsers users logged on: $var" } } else { $NagiosStatus = "2" if ($LoggedOnUsers -eq 1) { Write-Host "$LoggedOnUsers user logged on: $var" } else { Write-Host "$LoggedOnUsers users logged on: $var" } } } } exit $NagiosStatus
求助需求
我不清楚如何编写适配Check_MK的输出格式,恳请提供解决思路。
内容的提问来源于stack exchange,提问作者Daniel D.
相关产品推荐
相关产品推荐

