如何检查从Powershell调用SVN的结果

如何检查从Powershell调用SVN的结果,svn,powershell,Svn,Powershell,我正在尝试使用Powershell脚本自动执行分支操作,如下所示: $fromUrl = 'svn://some/from/url' $toUrl = 'svn://some/to/url.' [Array]$arguments = "copy", "-q", $fromUrl, $toUrl, "-m", "New branch" echo "Branching from: " $fromUrl echo "Branching to: " $toUrl $copyResult = &am

我正在尝试使用Powershell脚本自动执行分支操作,如下所示:

$fromUrl = 'svn://some/from/url'
$toUrl = 'svn://some/to/url.'

[Array]$arguments = "copy", "-q", $fromUrl, $toUrl, "-m", "New branch"

echo "Branching from: " $fromUrl
echo "Branching to: " $toUrl

$copyResult = & svn $arguments 
echo "Result: " $copyResult

echo "Switching to: " $toUrl
$switchResult = svn switch -q $toUrl ho-til-test
echo "Result: "  $switchResult
只要对SVN的调用起作用,它就可以正常工作;但是,我希望捕获结果,并在调用失败时使用错误消息停止脚本。上面的脚本显然失败了,因为URL无效,但是结果没有像我预期的那样在
$copyResult
$switchResult
中捕获。结果输出如下所示:;状态消息显示在我的两个结果变量的输出之前,它们为空:

PS > .\PsExampleForSO.ps1
Branching from:
svn://some/from/url
Branching to:
svn://some/to/url.
svn: E731001: Unable to connect to a repository at URL 'svn://some/from/url'
svn: E731001: Unknown hostname 'some'
Result:
Switching to:
svn://some/to/url.
svn: E731001: Unable to connect to a repository at URL 'svn://some/to/url.'
svn: E731001: Unknown hostname 'some'
Result:
PS >
这与我正在进行的其他一些调用不同,在这些调用中,可以在变量中捕获输出结果,然后进行检查


对于这两个调用,有什么方法可以实现这一点吗?

外部命令的退出代码存储在
$LastExitCode
环境变量中。如果希望脚本在出现错误时停止,则应检查该变量:

$copyResult = & svn $arguments
if ($LastExitCode -ne 0) {
  exit
}
我建议在日志文件中捕获常规和错误输出,而不是变量,不过:

& svn $arguments >'C:\path\to\output.log' 2>'C:\path\to\error.log'
if ($LastExitCode -ne 0) {
  exit
}

echo“Result:$copyResult”
你试过这个吗?@DipuH-Yup,没什么区别。
Write-Host“Result:$copyResult”
这个?我希望你也能像上面那样实时尝试虚拟URL。因此,它将始终生成错误输出
$copyResult=&svn$arguments 2>&1
我认为应该解决这个问题。谢谢您的输入,但是没有,这没有捕获它。是的,我正在用一个脚本进行测试,这个脚本每次运行时都会产生错误。输出如问题所示。