是否有恢复选项来启动服务,而不考虑从属服务状态?



关键服务ServiceB,ServiceC和ServiceD必须在非关键服务A之后启动(服务A监视B,C和D,但对操作不重要)。

如果启动 ServiceA 有任何问题,我们仍然需要启动 B,C 和 D.否则我们总是希望先启动 ServiceA。如果 A 崩溃(在操作过程中停止),我们宁愿不停止 B,C 或 D)

所有服务都设置为自动启动。(我们不能对B,C和D使用延迟启动,因为时间不合适,我们不想改变其他延迟服务的默认值2分钟)

已在服务 B、C 和 D 上设置了依赖项,以便在服务未运行时它们将始终启动所需的服务。如果停止了服务A,这些将停止。

下面用于设置依赖项的命令:

sc config ServiceB depend= ServiceA

我们正在探索系统中的恢复选项,无论 A 在多次尝试后是否不会启动,这些选项都将启动 B、C 和 D。

如果无法通过 SC.exe 或配置 Windows 10 进行配置,那么我们可以恢复为使用启动脚本或自定义服务控制应用程序,因为我都已经构建了,但更喜欢这个更干净的选项配置操作系统。

是否有可以使用不同的延迟启动等待值配置的服务组?

任何建议或编辑表示赞赏。蒂亚

由于我们已经运行了一个启动脚本,所以我很快就把它放在了一起。这并不理想,而且有点效率低下,但它确实有效。将 ServiceB、C 和 D 设置为手动启动并使用它来启动它们可能会达到预期的结果,而无需上述依赖项。

Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Length = 0 Then
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe" _
, """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
WScript.Quit
End If
If Not ServiceAction("ServiceA", -1) = "RUNNING" Then 
'Stop the services if they are running
ServiceAction "ServiceB", 0
ServiceAction "ServiceC", 0
ServiceAction "ServiceD", 0
'Start the services in sequence
ServiceAction "ServiceA", 1
ServiceAction "ServiceB", 1
ServiceAction "ServiceC", 1
ServiceAction "ServiceD", 1
End If
Function ServiceAction(service_name, service_action)
'Start Service
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootcimv2")
Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service Where Name ='" & service_name & "'")
For Each objService in colListOfServices
If service_action = -1 Then 
ServiceAction = UCase(objService.State)
ElseIf service_action = 1 Then 
ServiceAction = objService.StartService()
ElseIf service_action = 0 Then
ServiceAction = objService.StopService()
End If
Next
'For debugging
WScript.Echo "WMI CODE: "&ServiceAction
End Function

相关内容

最新更新