Войти

Показать полную графическую версию : Остановка Служб


John87
21-11-2022, 09:07
день добрый!

в идеале конечно cmd/bat, но можно и в ps..
только обьясните дураку как 100% заставить запускаться скрипты ps..(
я уже везде где можно поставил execution policy bypass но он упорно отказывается выполнять скрипты в автоматическом режиме (

задачка, есть сервер, на нем условно 4 службы запущены, нужно поочередно остановить службы, но пока не остановится первая нельзя начать останавливать вторую, и так до 4, когда ВСЕ 4 службы остановлены, ребут компьютера.
задача 2, суть та же, через 10 мин после задачи №1, убедиться что ВСЕ 4 службы запущены и после этого запуск команды start.bat грубо говоря

DJ Mogarych
21-11-2022, 11:54
Запускать надо из планировщика, указывая программу как powershell.exe (путь необязательно), а аргументы как

-file "c:\путь\к\скрипту.ps1" -executionpolicy bypass


Не забыть поставить галку запуска с повышенными правами и указать админскую учётку, если нужно.

1.

function Stop-Svc {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]$svc
)
do {
Stop-Service $svc
sleep 2
}
until ((get-service $svc).status -eq "Stopped")
}

Stop-Svc service1
Stop-Svc service2
Stop-Svc service3
Stop-Svc service4

& shutdown.exe -r -t 0 -f


2.

if (!((Get-Service service1,service2,service3,service4).Status -notmatch "running")) {
& "C:\temp\start.bat"
}


Не особо тестировал, потренируйтесь на кошках перед внедрением.

John87
22-11-2022, 06:12
потренируйтесь на кошках перед внедрением »
их то за что? )

вроде получилось +-, а если нужно то же самое с процессами провернуть? т.е. только удостоверившись что процесса нет продолжать далее

function Stop-Tsk {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]$tsk
)

do {
Stop-Process -Name $tsk -force
sleep 2
}
until ((get-process $tsk).CategoryInfo -eq "ObjectNotFound")
}

Stop-Tsk mspaint

& "C:\temp\Run2.bat"

DJ Mogarych
22-11-2022, 11:09
function Stop-Tsk {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]$tsk
)
do {
Stop-Process -Name $tsk
sleep 2
}
until ((Get-Process $tsk -ErrorAction SilentlyContinue) -eq $null)
}

Stop-Tsk mspaint

& "C:\temp\Run2.bat"

John87
22-11-2022, 11:38
DJ Mogarych, что то не то (
эту функцию вообще не отрабатывает, просто висит и не пытается закрыть процесс




© OSzone.net 2001-2012