Detect unresponsive applications using Powershell
Change the variables, save as a ps1 and schedule this:
$to = "user@email.com", "user2@email.com"
$from = "user@email.com"
$smtp = "address of SMTP server"
$engine = $env:computername
$log = "C:\pathto\log.txt"
$now=Get-Date -format "dd-MMM-yyyy HH:mm"
$Processes = Get-Process -EA Stop
$nProcesses = @($Processes | ? { $_.Responding -eq $false })
if($nProcesses) {
foreach($nProcess in $nProcesses) {
$nProcess | select Name, id, MainWindowTitle, Responding
Write-Host "Non-Responsive Processes found!"
$msg = "Non responsive processes found on $engine! -- $nProcess"
$body = "Non responsive processes found on $engine!
$nProcess"
Add-content $log -value $now
Add-content $log -value $msg
Send-Mailmessage -From $from -To $to -Subject $msg -Body $body -Priority High -dno onSuccess, onFailure -SmtpServer $smtp
}
}
$from = "user@email.com"
$smtp = "address of SMTP server"
$engine = $env:computername
$log = "C:\pathto\log.txt"
$now=Get-Date -format "dd-MMM-yyyy HH:mm"
$Processes = Get-Process -EA Stop
$nProcesses = @($Processes | ? { $_.Responding -eq $false })
if($nProcesses) {
foreach($nProcess in $nProcesses) {
$nProcess | select Name, id, MainWindowTitle, Responding
Write-Host "Non-Responsive Processes found!"
$msg = "Non responsive processes found on $engine! -- $nProcess"
$body = "Non responsive processes found on $engine!
$nProcess"
Add-content $log -value $now
Add-content $log -value $msg
Send-Mailmessage -From $from -To $to -Subject $msg -Body $body -Priority High -dno onSuccess, onFailure -SmtpServer $smtp
}
}