Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Остановка Служб (http://forum.oszone.net/showthread.php?t=352421)

John87 21-11-2022 09:07 2996990

Остановка Служб
 
день добрый!

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

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

DJ Mogarych 21-11-2022 11:54 2996997

Запускать надо из планировщика, указывая программу как 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 2997046

Цитата:

Цитата DJ Mogarych
потренируйтесь на кошках перед внедрением »

их то за что? )

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

Код:

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 2997060

Код:

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 2997064

DJ Mogarych, что то не то (
эту функцию вообще не отрабатывает, просто висит и не пытается закрыть процесс


Время: 09:22.

Время: 09:22.
© OSzone.net 2001-