Каково действие -ErrorAction Stop для оператора Invoke-Expression? - PullRequest
0 голосов
/ 01 мая 2019

Я использую Invoke-Expression в каждой строке файла. Если одна из строк вызывает ошибку, я хотел бы прекратить выполнение. Я пытался использовать -ErrorAction Stop, но это не имеет никакого эффекта.

Каким должен быть эффект следующего?

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

Как можно немедленно выйти из цикла, если вызов выражения вызывает ошибку?

Примечание. Следующее изменение не останавливает итерацию содержимого файла

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

1 Ответ

0 голосов
/ 02 мая 2019

Используйте 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
    }
}

Подробнее о том, как завершить цикл: Завершение работы скрипта в PowerShell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...