目前我在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中获得此信息?
答案 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]
}