Powershell get-process查询

时间:2013-02-24 16:05:46

标签: powershell

我想编写一个简单的If语句来检查进程是否存在。 如果它存在,那么应该开始。

像这样,但正在工作..;)

If ((Get-Process -Name Tvnserver.exe ) -eq $True)
{ 
    Stop-Process tnvserver
    Stop-Service tvnserver
    Uninstall...
    Install another Piece of Software
}
Else
{
    do nothing
}

由于

2 个答案:

答案 0 :(得分:3)

Get-Process不返回布尔值,并且列出了没有扩展名的进程名称,这就是您的代码不起作用的原因。删除扩展名,并检查结果是$null建议为Musaab Al-Okaidi,还是将结果转换为布尔值:

if ( [bool](Get-Process Tvnserver -EA SilentlyContinue) ) {
  # do some
} else {
  # do other
}

如果您不希望脚本在进程未运行时执行任何操作:只需省略else分支。

答案 1 :(得分:2)

如果该过程不存在,这将评估为真:

(Get-Process -name Tvnserver.exe -ErrorAction SilentlyContinue) -eq $null

或者如果你想改变它,你可以否定声明如下:

-not ( $(Get-Process -name Tvnserver.exe -ErrorAction SilentlyContinue) -eq $null )

拥有-ErrorAction SilentlyContinue以避免在进程不存在时抛出任何错误非常重要。