Я пытался создать сценарий powershell, который перезапускает удаленную службу Windows. До сих пор это работало нормально, но я бы хотел встроить систему проверки.
Пока служба останавливается и запускается снова нормально, но, учитывая, что она работает на производственном компьютере, нам нужна дополнительная проверка:
function setStatusOfService {
for ($service)
{
$serviceinfo3 = Get-Service $service -ComputerName $Computer1
if ($serviceinfo3.Status -eq 'Running')
{
Get-Service -Name $Service1 -ComputerName $Computer1 | Stop-Service
GetStatusOfService $service -ComputerName $Computer1
Start-Sleep -Seconds 10
}
else
{
Get-Service -Name $Service1 -ComputerName $Computer1 | Start-Service
GetStatusOfService $service -ComputerName $Computer1
break
}
}
exit
}
Это работает довольно хорошо. Но я попытался сделать так, чтобы функция продолжала пытаться запустить службу, когда она не работает, но безрезультатно.
Другой шаг, на котором я застрял, заключается в том, что Powershell отправляет электронное письмо после завершения сценария. После того, как он останавливается и снова запускает службу, он проверяет состояние и отправляет этот определенный статус:
Function getStatusOfService {
$serviceinfo = Get-Service $service -ComputerName $Computer1
Write-Host $service is $serviceinfo.Status
SendEmail
}
Но то, что я до сих пор не могу получить, это то, что он должен отправлять электронную почту только тогда, когда статус остановлен. Я пробовал несколько вариантов, таких как Status -eq "stopped"
, но он все равно отправляет электронное письмо.
Может кто-нибудь дать мне совет, как мне это встроить?
С уважением,
Рик.