답변:
포스터는 서비스를 다시 시작하기 전에 서비스가 중지되었는지 확인하려고합니다. "sc query"출력에 루프를 사용하여 다음과 같은 작업을 수행 할 수 있습니다.
:stop
sc stop myservice
rem cause a ~10 second sleep before checking the service state
ping 127.0.0.1 -n 10 -w 1000 > nul
sc query myservice | find /I "STATE" | find "STOPPED"
if errorlevel 1 goto :stop
goto :start
:start
net start | find /i "My Service">nul && goto :start
sc start myservice
순전히 서비스를 다시 시작하기위한 것이라면
Net stop myservice
Net start myservice
그러나 sc 옵션에 액세스하려면 start / wait 명령을 사용할 수 있습니다
start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"
이 기술은 모든 명령에 적용 할 수있는보다 일반적인 솔루션입니다.
sc stop myservice
서비스가 중지되기 전에 중지 명령을 보내고 반환합니다. start / b를 사용하여 sc를 호출해도 도움이되지 않습니다.
이려면 조용한 (예를 들어, 서버 서비스로) 중지하는 확인서를 요구 일부 서비스의 다시 시작, 당신은 추가 할 수 / Y를 정지 명령의 끝에.
net stop Server /y
net start Server
자동 스크립트 실행에 도움이됩니다.
실패한 서비스를 다시 시작하려면 스크립트를 실행할 필요가 없습니다. 서비스 MMC 스냅인에서 서비스를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 다음 복구 탭을 클릭하십시오. 여기에서 서비스를 중지 할 작업을 설정할 수 있습니다. 사용 가능한 유연성이 많이 있습니다. 서비스를 중지하려는 경우 스크립트가 필요합니다. 무언가를 한 다음 스크립트를 시작하고 배치 파일을 시작 net stop "myserviceshortname"
하고 끝으로 끝내십시오.net start "myserviceshortname"
vbscipt에서는 서비스와 그 종속자를 중지시키는 코드가 조금 더 있습니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='myservice'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For each objService in colServiceList
objService.StopService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name='myservice'")
For each objService in colServiceList
errReturn = objService.StopService()
Next
여기에 서비스를 시작하고 그것이 의존하는 모든 것이 있습니다 (이것은 익숙해야 함)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name='Myservice'")
For each objService in colServiceList
errReturn = objService.StartService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='myservice'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Dependent" )
For each objService in colServiceList
objService.StartService()
Next