我有一个自定义模块包装外部命令(csrun.exe
),并解析输出,以便我可以在PowerShell中使用它。
除了外部命令写入stderror
以及清除cmdlet中的错误之外,所有内容都可以正常工作。它会清除(即$error.count
是0
而$lasterrorcode
是0
,但是一旦我返回到调用我的cmdlet的脚本,$error
和{{ 1}}不再清除,$lasterrorcode
中的错误引用外部命令的基础异常
$error
我尝试过,尝试捕捉,清除上述变量。无论如何,调用脚本保留对错误的引用。
System.Management.Automation.RemoteException: The compute emulator is not running.
$__azureEmulatorPath = "C:\Program Files\Microsoft SDKs\Azure\Emulator\"SDKs\Azure\Emulator\"
$__azureEmulator = __azureEmulatorPath + "csrun.exe"
function Get-EmulatorStatus() {
[OutputType([ComputeEmulatorStatus])]
[cmdletbinding()]
param()
$output = (& $__azureEmulator /status | Out-String)
if ($error.Count -gt 0 -or $LASTEXITCODE -ne 0) {
Write-Host ($Error | Format-List -Force | Out-String)
Write-Host Clearing Error and Continuing
$error.Clear()
$LASTEXITCODE = 0
}
#error from command cleared here
return $output
}
export-modulemember -function *
答案 0 :(得分:6)
尝试使用以下两个选项之一:
我遇到了这个调用robocopy,即使成功也设置了非零退出代码,并干扰了Jenkin的自动化。