Как обходить ошибки через Powershell ErrorAction


18 августа 2019


Работы с ошибками в Powershell ErrorAction

Powershell ErrorAction это ключ, с помощью которого мы можем обходить часть ошибок. Это помогает остановить скрипт, если будет ошибка. 

У меня есть две директории, одна которая существует, а другая нет. Если я выполню поиск файлов, то скрипт выведет ошибку:

$path = 'C:\NotExist\','C:\Exist\'
$path | Get-ChildItem

Get-ChildItem : Cannot find path 'C:\NotExist\' because it does not exist.

Что бы этого избежать у нас есть ключ ErrorAction со следующими значениями:

  • Continue или 0 - значение по умолчанию. Ошибка выводится на экран, но работа скрипта продолжается.
  • SilentlyContinue или 1 - ошибка не выводится на экран и скрипт продолжает работу.
  • Stop или 2 - останавливает выполнение при ошибке.
  • Ignore или 3 - игнорирует ошибки и при этом никакие логи об ошибке не сохраняются.
  • Inquire - с этим ключом у нас будет запрос на дальнейшее действия.
  • Suspend - работает при режиме Workflow (рабочих процессов). К обычным командлетам не имеет отношения.

Пример со значением по умолчанию:

$services = "NotExist","NetLogon"
$services | Get-Service -ErrorAction Continue

Powershell ErrorAction

В случае с SilentContinue у нас ошибок не будет:

Get-Process -Name "NotExist","svchost" -ErrorAction SilentlyContinue

Powershell SilentlyContinue

При этом, конечно, ключ мы должны указывать везде где ожидаем увидеть ошибку:

Powershell ошибка

Если мы выполним такую команду, то все равно получим ошибку, которая остановит процесс:

Get-Variable -Name $null -ErrorAction SilentlyContinue

Это ошибка, которая прерывает процесс и для нее нужно использовать другие методы в виде try и catch.

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.