我想编写一个简单的If语句来检查进程是否存在。 如果它存在,那么应该开始。
像这样,但正在工作..;)
If ((Get-Process -Name Tvnserver.exe ) -eq $True)
{
Stop-Process tnvserver
Stop-Service tvnserver
Uninstall...
Install another Piece of Software
}
Else
{
do nothing
}
由于
答案 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
以避免在进程不存在时抛出任何错误非常重要。