我要停止多重服务,检查服务是否正确停止然后运行多个批处理文件。批处理作业完成后,首先重新启动已停止的服务。我开始使用以下脚本,但无法继续下去。
#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
}
答案 0 :(得分:1)
以下内容应该有效:
$services = 'StiSvc', 'AdobeARMservice'
Stop-Service $services -ErrorAction Stop
& 'C:\download\hello.bat'
& 'C:\path\to\other.cmd'
#...
Start-Service $services
如果没有,您需要提供有关确切失败的详细信息以及方式。包括所有错误和状态消息。
答案 1 :(得分:0)
谢谢大家, 我修改了脚本如下。该脚本停止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"}
我正在努力改进脚本。我会尽快回复你。 此致