【问题标题】:What is the effect of the -ErrorAction Stop for an Invoke-Expression statement?-ErrorAction Stop 对 Invoke-Expression 语句有什么影响?
【发布时间】:2019-09-20 05:37:17
【问题描述】:

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

下面的效果应该是什么?

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

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

注意:以下更改不会停止对文件内容的迭代

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

【问题讨论】:

标签: powershell


【解决方案1】:

使用 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

【讨论】:

    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2018-01-21
    • 2012-08-14
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    相关资源
    最近更新 更多