在PowerShell中判断Stop-Process是否成功

时间:2015-08-14 19:25:01

标签: powershell start-process

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

cmake -G "Visual Studio 11 Win64" "%myProject%\src"

CD %HOMEDRIVE%\Windows\Microsoft.NET\Framework64\v4.0.30319

msbuild %myProject%\build\ALL_BUILD.vcxproj /detailedsummary /property:PlatformToolset=v110 /p:TargetFrameworkVersion=v4.5.1 /clp:ErrorsOnly /p:Configuration=Debug

msbuild %myProject%\build\ALL_BUILD.vcxproj /detailedsummary /property:PlatformToolset=v110 /p:TargetFrameworkVersion=v4.5.1 /clp:ErrorsOnly /p:Configuration=Release

以后就这样杀了它:

$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 之前进程已经死亡,我将在PowerShell输出中出错。我需要禁用此错误,只需获取布尔值,指示Stop-Process是否已成功进入PowerShell脚本的变量。我怎样才能在PS中获得此信息?

1 个答案:

答案 0 :(得分:1)

使用$?变量确定上次执行命令的成功或失败。设置$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]
}