我有一个主脚本master.ps1
,它调用两个脚本One.ps1
和Two.ps1
,如:
&".\One.ps1"
&".\Two.ps1"
当One.ps1
脚本出现错误时,执行会停止,而不会继续执行Two.ps1
即使Two.ps1
出错,如何继续执行One.ps1
?
答案 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.
$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"
}
格式化的其他方法,但你明白了。