【问题标题】:Powershell help, if process exists, stop it, else start a service?Powershell帮助,如果进程存在,停止它,否则启动服务?
【发布时间】:2011-03-09 19:21:32
【问题描述】:

我对 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

【问题讨论】:

    标签: powershell scripting shell conditional cmdlets


    【解决方案1】:

    使用 Get-Service 获取服务状态。进程可能正在运行,但服务可能已暂停:

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

    【讨论】:

    • 你给了我一些想法。我最终走上了这条路。 $processes = @(gps tcore.*) if($processes.Count -gt 0) { kill -ProcessName tcore.* -force } else { sasv -DisplayName AMS* } 谢谢,~ck
    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2016-05-06
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多