Сегодня хочу поделиться небольшим, но полезным лайфхаком из практики — как быстро найти и перезапустить зависший сервис через PowerShell.
📌 Ситуация: сервис вроде как "работает", статус *Running*, но по факту не отвечает или не выполняет свои задачи. Такое бывает с агентами резервного копирования, антивирусами и даже SQL Server.
🔥 Вот скрипт, который мне помогает выявить такие "зомби-сервисы" и перезапустить их:
$serviceName = "Имя_сервиса"
$svc = Get-Service -Name $serviceName
if ($svc.Status -eq "Running") {
$process = Get-WmiObject Win32_Service | Where-Object { $_.Name -eq $serviceName }
if ($process.ProcessId -ne 0) {
Write-Host "Сервис запущен с PID $($process.ProcessId). Перезапускаем..."
Restart-Service -Name $serviceName -Force
} else {
Write-Host "PID не найден. Возможна проблема – проверь вручную!"
}
} else {
Write-Host "Сервис не запущен. Статус: $($svc.Status)"
}
💡 Это особенно полезно на тех серверах, где нет стороннего мониторинга, а время реагирования критично.
💬 А у вас часто бывает, что сервис висит, но статус OK? Чем мониторите такие случаи — Task Scheduler, скрипты, Zabbix?
👉 @win_sysadmin