Помощь Powershell, если процесс существует, остановить его или запустить сервис? - PullRequest
2 голосов
/ 29 июня 2010

Я довольно новичок в 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*
}

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

Приветствия
~ Ск

1 Ответ

6 голосов
/ 29 июня 2010

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

$services = @(Get-Service alcore.*)
foreach ($service in $services)
{
    if ($service.Status -eq 'Running')
    {
        $service | Stop-Service
    }
    else
    {
        Start-Service -DisplayName crk*
    }
}
...