我有一个powershell脚本,我正在执行一个节点命令,该命令由TFS 2013 Build执行:
node "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\r.js" -o "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\build-styles.js"
$success = $?
if (!$success){
exit 1
}
当我手动运行此脚本且命令失败$success
为false
且脚本为exits 1
时,但当构建执行脚本且node
命令失败时$success
(和$?
)是true
。
什么可以改变powershell的行为?我不知道还有什么可以尝试的。到目前为止,我删除了以下内容:
cmd /c node ...
Start-Process node...
思想?
答案 0 :(得分:0)
我们可以对此进行重组,以便我们对发生的事情有更好的感受吗?我倾向于避免$?因为用它调试和测试起来比较困难。
try
{
Write-Host "TF_BUILD_SOURCESDIRECTORY = $Env:TF_BUILD_SOURCESDIRECTORY"
$result = node "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\r.js" -o "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\build-styles.js"
Write-Host "Result = $result"
}
catch
{
Write-Error "Command failed"
Exit 1
}
有时我将命令包装在Start-Process -NoNewWindow -Wait
中只是为了查看是否会生成不同的错误消息。
在您的情况下,我还会尝试Enter-PSSession
在TFS服务器上获取非交互式提示。我已经看到过,当shell不是交互式时,powershell会不同地起作用。