Windows

如何在使用 PowerShell 失敗後配置服務自動重啟

  • August 25, 2021

在 Windows 系統上,在服務控制台中,有一個恢復選項卡,用於配置服務發生故障時的操作。

管理 Windows 服務時的恢復選項

如何使用 PowerShell 進行配置?

目前沒有用於管理服務恢復的本機 PowerShell cmdlet。

但是,要在服務失敗時自動重啟服務,您可以使用SC.

(在 PowerShell 提示符之前,您必須在其前面加上 & 並使用全名sc.exe

& sc.exe failure msftpsvc reset= 30 actions= restart/5000

官方文件在Microsoft Docs下的Sc Failure

摘自https://evotec.xyz/set-service-recovery-options-powershell/

function Set-ServiceRecovery{
   [alias('Set-Recovery')]
   param
   (
       [string] [Parameter(Mandatory=$true)] $ServiceDisplayName,
       [string] [Parameter(Mandatory=$true)] $Server,
       [string] $action1 = "restart",
       [int] $time1 =  30000, # in miliseconds
       [string] $action2 = "restart",
       [int] $time2 =  30000, # in miliseconds
       [string] $actionLast = "restart",
       [int] $timeLast = 30000, # in miliseconds
       [int] $resetCounter = 4000 # in seconds
   )
   $serverPath = "\\" + $server
   $services = Get-CimInstance -ClassName 'Win32_Service' -ComputerName $Server| Where-Object {$_.DisplayName -imatch $ServiceDisplayName}
   $action = $action1+"/"+$time1+"/"+$action2+"/"+$time2+"/"+$actionLast+"/"+$timeLast
   foreach ($service in $services){
       # https://technet.microsoft.com/en-us/library/cc742019.aspx
       $output = sc.exe $serverPath failure $($service.Name) actions= $action reset= $resetCounter
   }
}
Set-ServiceRecovery -ServiceDisplayName "Pulseway" -Server "MAIL1"

引用自:https://serverfault.com/questions/983831