我想编写一个简单的 If 语句来检查进程是否存在。如果它存在,应该开始一些事情。
像这样,但工作.. ;)
If ((Get-Process -Name Tvnserver.exe ) -eq $True)
{
Stop-Process tnvserver
Stop-Service tvnserver
Uninstall...
Install another Piece of Software
}
Else
{
do nothing
}
谢谢
我想编写一个简单的 If 语句来检查进程是否存在。如果它存在,应该开始一些事情。
像这样,但工作.. ;)
If ((Get-Process -Name Tvnserver.exe ) -eq $True)
{
Stop-Process tnvserver
Stop-Service tvnserver
Uninstall...
Install another Piece of Software
}
Else
{
do nothing
}
谢谢
Get-Process不返回布尔值,并且列出的进程名称没有扩展名,这就是您的代码不起作用的原因。删除扩展并检查结果是否$null如Musaab Al-Okaidi建议的那样,或者将结果转换为布尔值:
if ( [bool](Get-Process Tvnserver -EA SilentlyContinue) ) {
# do some
} else {
# do other
}
如果您不希望脚本在进程未运行的情况下执行任何操作:只需省略else分支。
如果进程不存在,这将评估为 true:
(Get-Process -name Tvnserver.exe -ErrorAction SilentlyContinue) -eq $null
或者如果你想改变它,你可以否定该语句,如下所示:
-not ( $(Get-Process -name Tvnserver.exe -ErrorAction SilentlyContinue) -eq $null )
-ErrorAction SilentlyContinue如果进程不存在,必须避免引发任何错误,这一点很重要。