Справка Powershell, если процесс существует, остановите его, иначе запустите службу?

Я новичок в Powershell. У меня есть 2 разных сценария, которые я запускаю, и я хотел бы объединить их в один сценарий.

Скрипт 1 состоит из 1 строки

Stop-Process -ProcessName alcore.*  -force

Его цель — завершить любой процесс, начинающийся с «alcore».

Сценарий 2 также имеет 1 строку

Start-Service -displayname crk*

Он запускает любую службу, которая начинается с crk.

Как я могу объединить их в один скрипт? Если процессы запущены, я хочу их остановить, если нет, я хочу запустить службы. Как я могу это сделать?

Я пытаюсь это сделать, но это не работает

$services = Get-Process alcore.*

if($services.Count -qe 1){
    Stop-Process -ProcessName alcore.*  -force
} else {

    Start-Service -displayname crk*
}

Как я могу сделать это правильно? Также я должен обернуть их в функцию и вызвать функцию? Это кажется немного чище. Спасибо за любую помощь.

С уважением,
~ck


person Hcabnettek    schedule 29.06.2010    source источник


Ответы (1)


Используйте Get-Service, чтобы получить статус службы. Процесс может быть запущен, но служба может быть приостановлена:

$services = @(Get-Service alcore.*)
foreach ($service in $services)
{
    if ($service.Status -eq 'Running')
    {
        $service | Stop-Service
    }
    else
    {
        Start-Service -DisplayName crk*
    }
}
person Keith Hill    schedule 29.06.2010
comment
вы подали мне несколько идей. В итоге я пошел по этому пути. $processes = @(gps tcore.*) if($processes.Count -gt 0) { kill -ProcessName tcore.* -force } else { sasv -DisplayName AMS* } Спасибо, ~ck - person Hcabnettek; 30.06.2010