Powershell帮助,如果进程存在,停止它,否则启动服务?

Hca*_*tek 2 shell powershell cmdlets scripting conditional

我对Powershell很新.我有两个不同的脚本,我正在运行,我想组合成一个脚本.

脚本1有1行

Stop-Process -ProcessName alcore.*  -force
Run Code Online (Sandbox Code Playgroud)

它的目的是结束任何以"alcore"开头的过程.

脚本2也有1行

Start-Service -displayname crk*
Run Code Online (Sandbox Code Playgroud)

它启动任何以crk开头的服务.

如何将这些组合成一个脚本?如果进程正在运行,我希望阻止它们,如果没有,我希望启动服务.我怎么能做到这一点?

我正在尝试这个,但它不起作用

$services = Get-Process alcore.*

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

    Start-Service -displayname crk*
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能正确?我还应该将它们包装在函数中并调用函数吗?这似乎有点清洁.谢谢你的帮助.

干杯,
〜ck

Kei*_*ill 6

使用Get-Service获取服务状态.该过程可能正在运行,但服务可能会暂停:

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