-ErrorAction Stop对Invoke-Expression语句的作用是什么?

时间:2019-05-01 17:07:57

标签: powershell

我正在文件的每一行上使用Invoke-Expression。如果其中一行导致错误,我想停止执行。我尝试使用-ErrorAction Stop停止,但没有效果。

以下内容应该是什么?

gc -Path "fileWithErrorOnSomeLine.txt" | % {Invoke-Expression "$_" -ErrorAction Stop }

如果表达式调用产生错误,如何立即退出循环?

注意:以下更改不会停止遍历文件内容

gc -Path "fileWithErrorOnSomeLine.txt" | % {Invoke-Expression "$_" -ErrorAction Stop } -ErrorAction Stop

1 个答案:

答案 0 :(得分:0)

使用try-catch

"tester" > testing.txt
"test2" >> .\testing.txt
"get-childitem" >> .\testing.txt

gc .\testing.txt |  % { 
    try { invoke-expression "$_" -ErrorAction Stop
    }
    catch { 
        write-warning "error : $_ "
        break
    }
}

有关如何终止循环的更多信息: Terminating a script in PowerShell