停止服务,运行batch file,然后启动服务

我必须停止多个服务,检查服务是否正确停止THEN运行多个batch file。 批处理作业完成时,首先再次启动停止的服务。 我开始下面的脚本,但不能进一步。

#Define Services $service1 = 'StiSvc' $service2 = 'AdobeARMservice' $services = @( $service1, $service2 ) #Stop Services Get-Service | Where { $services -contains $_.Name } | Foreach { $_ | Stop-Service } #Verify Services Get-Service | Where { $services -contains $_.Name } | Foreach { if ((Get-Service $_.Name).Status -eq "stopped") { Write-Host 'Service Stop Pass (0)' } else { Write-Host 'Service Stop Failed (1000)'; exit '1000' } } #Start batch if ($services.Status -eq "Stopped") { Start-Process "cmd.exe" "/c C:\download\hello.bat" } else { Start-Sleep -s 10 } 

以下应该工作:

 $services = 'StiSvc', 'AdobeARMservice' Stop-Service $services -ErrorAction Stop & 'C:\download\hello.bat' & 'C:\path\to\other.cmd' #... Start-Service $services 

如果没有,你需要提供更多关于什么是失败的信息,以及如何。 包含所有错误和状态消息。

谢谢大家,我修改了下面的脚本。 脚本停止2个服务,当2个服务停止时,它启动批处理文件。

 #Stop Services Get-Service StiSvc, AdobeARMservice | Stop-Service #Verify Services if (((Get-Service StiSvc).Status -eq "stopped") -and ((Get-Service AdobeARMservice).Status -eq "stopped")) # Start batch {Start-Process "cmd.exe" "/c C:\download\hello.bat"} 

我正在努力改进脚本。 我会尽快回复你。 问候