面对错误时脚本会停止执行

时间:2016-12-01 09:50:13

标签: powershell

我有一个主脚本master.ps1,它调用两个脚本One.ps1Two.ps1,如:

&".\One.ps1"
&".\Two.ps1"

One.ps1脚本出现错误时,执行会停止,而不会继续执行Two.ps1

即使Two.ps1出错,如何继续执行One.ps1

2 个答案:

答案 0 :(得分:2)

您必须将$ErrorActionPreference设置为继续

Determines how Windows PowerShell responds to a non-terminating
error (an error that does not stop the cmdlet processing) at the
command line or in a script, cmdlet, or provider, such as the
generated by the Write-Error cmdlet. 

You can also use the ErrorAction common parameter of a cmdlet to 
override the preference for a specific command. 

Source

$ErrorActionPreference = 'continue'

注意 :作为最佳做法,我建议首先确定当前错误操作首选项,将其存储在变量中并在脚本后重置:

$currentEAP = $ErrorActionPreference
$ErrorActionPreference = 'continue'
&".\One.ps1"
&".\Two.ps1"
$ErrorActionPreference = $currentEAP

答案 1 :(得分:0)

@Martin是正确的,假设.\One.ps1的成功或失败不会影响.\Two.ps1,如果您不关心记录或以其他方式处理错误。但是如果您更愿意处理错误而不是继续经过它,您还可以使用下面的Try{}Catch{}块来记录错误(或者在Catch{}中采取您想要的任何其他操作)< / p>

Try{
  &".\One.ps1"
} Catch {
  $error | Out-File "OneError.txt"
}
Try{
  &".\Two.ps1"
} Catch {
  $error | Out-File "TwoError.txt"
}

格式化的其他方法,但你明白了。