我使用Invoke-Expression从另一个调用一个PS脚本,但我无法确定必须从调用脚本中检测到其他脚本失败了。实际上我只是希望调用脚本在这种情况下停止,我希望$ ErrorActionPreference =“Stop”可以解决问题。
调用脚本:
$ErrorActionPreference = "Stop"
$psCommand = ".\Work.ps1 -a -b " + $var
Invoke-Expression $psCommand
# More work
Work.ps1:
param
(
[string]$a,
[switch]$b = $false
)
$ErrorActionPreference = "Stop"
# Do Stuff
If ($x -ne 0)
{
Write-Output ("Stuff failed")
Exit 2
}
这不起作用。在Work.ps1退出代码2后,调用脚本不会停止。我是否需要在调用脚本中使用try-catch?或者我需要查看$ error? (似乎很复杂)
答案 0 :(得分:0)
这是有效的,因为我使用$ ErrorActionPreference =“Stop”。否则我应该抛出:
param
(
[string]$a,
[switch]$b = $false
)
$ErrorActionPreference = "Stop"
# Do Stuff
If ($x -ne 0)
{
Write-Error ("Stuff failed")
}