#windows #powershell #batch-file
#Windows #powershell #пакетный файл
Вопрос:
Я должен остановить несколько служб, проверить службы, правильно ли они остановлены, а затем запустить несколько пакетных файлов. Когда пакетные задания будут выполнены, сначала запустите остановленные службы. Я запустил следующий скрипт, но не смог продвинуться дальше.
#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:downloadhello.bat"
} else {
Start-Sleep -s 10
}
Комментарии:
1. И в чем собственно вопрос?
2. Итак, в чем ваш вопрос? Что работает не так, как ожидалось? Вы «не смогли пойти дальше»… как?
3. Это работает не так, как ожидалось. Службы останавливаются, но пакетный файл не запускается.
4. Попробуйте использовать оператор вызова для запуска пакетных файлов:
amp; "C:downloadhello.bat"
(просто так, безStart-Process
или)cmd /c
5. Я пробовал это, но пока без радости.
Ответ №1:
Должно работать следующее:
$services = 'StiSvc', 'AdobeARMservice'
Stop-Service $services -ErrorAction Stop
amp; 'C:downloadhello.bat'
amp; 'C:pathtoother.cmd'
#...
Start-Service $services
Если этого не произойдет, вам необходимо предоставить дополнительную информацию о том, что именно выходит из строя и как. Включите все сообщения об ошибках и состоянии.
Ответ №2:
Спасибо всем, я изменил сценарий следующим образом. Скрипт останавливает 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:downloadhello.bat"}
Я работаю над улучшением сценария. Я вернусь к вам как можно скорее.
С уважением