告诉PowerShell中的停止过程是否成功

告诉PowerShell中的停止过程是否成功,powershell,start-process,Powershell,Start Process,目前,我在PowerShell中启动如下进程: $proc = Start-Process notepad -Passthru $proc | Export-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml') $proc = Import-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml') $proc | Stop-Process 以后要像这样杀死它: $proc = Star

目前,我在PowerShell中启动如下进程:

$proc = Start-Process notepad -Passthru
$proc | Export-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc = Import-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc | Stop-Process
以后要像这样杀死它:

$proc = Start-Process notepad -Passthru
$proc | Export-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc = Import-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc | Stop-Process

问题是,如果进程在我调用
$proc | Stop process
之前死亡,我将在PowerShell输出中得到错误。我需要禁用此错误并只获取布尔值,该值指示是否已将停止进程成功地放入PowerShell脚本的变量中。如何在PS中获取此信息

使用
$?
变量确定上次执行命令的成功或失败。设置
$ErrorActionPreference
变量以决定如何处理每个脚本的错误输出,或使用
-ErrorAction
参数来设置每个命令的错误输出:

$proc = Import-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc | Stop-Process -ErrorAction SilentlyContinue
if($?) {
    #Success
    Write-host $proc " Stopped Successfully"
}
else {
    #Failure
    #Use $error variable to retrieve the message
    Write-Error $error[0]
}

$?
如果上次执行的命令成功,则变量为true;如果失败,则变量为false。若要禁用错误输出,请将-ErrorAction设置为SilentlyContinuin,您还可以在尝试终止该进程之前检查该进程是否存在。@Cole9350,您的解决方案效果很好。你可以把你的评论作为一个答案,我会把它标记为一个答案。非常感谢你!您还可以使用
$proc.HasExited