Здравствуйте, потребовалось мне сделать скрипт для проверки работы программы/службы и ее перезапуска.
Оговорюсь что в PS новичок, но погуглив по разным примерам написал то что требуется, и в целом оно работает.
Опустив излишний контекст, проблема в том, что мне нужно проверять доступность веб интерфейса программы, реализовал я это через функцию
if ((Test-NetConnection 127.0.0.1 -Port 8088).TcpTestSucceeded)
и сделав задание по запуску скрипта каждые 10 минут. Немного топорно, но устаривало.
Собственно сейсач хотелсь бы это переделать, что бы опрос шел непрерывно, по типу пинга.
Подскажите как можно это реализовать, погуглив не особо удалось найти решение которое бы устраивало.
Полный скрипт если что в спойлере
spoiler$datetime = Get-Date
$From = "..."
$To = "..."
$subject = "...."
$body = "..."
$SMTPServer = "..."
$SMTPPort = "..."
$Username = "..."
$Password = "..."
if ((Test-NetConnection 127.0.0.1 -Port 8088).TcpTestSucceeded)
{
"$datetime | $env:COMPUTERNAME | VCA Core works" | out-file C:\VCACore\Raport.txt -append
write-host "Works" -ForegroundColor Green
}
else {
"$datetime | $env:COMPUTERNAME | VCA Core fucked up!!!" | out-file C:\VCACore\Raport.txt -append
Restart-Service "VCA Core"
write-host "Restarted" -ForegroundColor Yellow
timeout /t 10
if ((Test-NetConnection 127.0.0.1 -Port 8088).TcpTestSucceeded)
{
"$datetime | $env:COMPUTERNAME | Service has restarted" | out-file C:\VCACore\Raport.txt -append
write-host "Restarted" -ForegroundColor Yellow
}
else
{
"$datetime | $env:COMPUTERNAME | VCA CORE FUCKED UP & Mail has been sent " | out-file C:\VCACore\Raport.txt -append
$message = New-Object System.Net.Mail.MailMessage $From, $To
$message.Subject = $subject
$message.IsBodyHTML = $true
$message.Body = $body
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($message)
}
}