Гид по технологиям

PowerShell ErrorAction — полное руководство

4 min read PowerShell Обновлено 13 Dec 2025
PowerShell ErrorAction — руководство
PowerShell ErrorAction — руководство

PowerShell ErrorAction

PowerShell по умолчанию выводит ошибку в зависимости от глобальной переменной $ErrorActionPreference. Параметр -ErrorAction позволяет локально переопределить поведение команды при возникновении терминальных ошибок. Доступные значения: Continue, Ignore, Stop, Inquire, SilentlyContinue и Suspend (Suspend работает только в PowerShell Workflow).

Когда использовать -ErrorAction

  • При автоматизированных задачах лучше явно задавать поведение ошибок, чтобы избежать непредсказуемых результатов.
  • В интерактивных сценариях можно использовать Inquire, чтобы дать пользователю выбор.
  • Для надёжных скриптов комбинируйте -ErrorAction Stop с Try/Catch.

Быстрый обзор значений ErrorAction

Continue

Поведение по умолчанию: сообщает об ошибке хосту и продолжает выполнение скрипта.

Пример:

Get-ChildItem C:\nonexistentfolder -ErrorAction Continue
Write-Output "Это сообщение всё равно будет выполнено."

Когда использовать: когда ошибка не критична и можно продолжать выполнение.

Ignore

Не сообщает ошибку хосту и продолжает выполнение; ошибка не попадает в массив $Error.

Пример:

Get-ChildItem C:\nonexistentfolder -ErrorAction Ignore
Write-Output "Эта строка выполнится, даже если была ошибка."

Когда использовать: редко — только если вы хотите полностью «проглотить» ошибку и не хранить её в $Error.

Stop

Останавливает выполнение команды/скрипта при ошибке. Используется для превращения не-терминальных ошибок в терминальные, чтобы их можно было поймать через Try/Catch.

Пример:

Get-ChildItem C:\nonexistentfolder -ErrorAction Stop
Write-Output "Эта строка НЕ будет выполнена, если произошла ошибка."

Когда использовать: в критичных секциях, где дальнейшее выполнение бессмысленно или опасно.

Stop command

Inquire

При ошибке PowerShell запрашивает у пользователя, какое действие предпринять (в интерактивной сессии).

Get-ChildItem C:\nonexistentfolder -ErrorAction Inquire
Write-Output "Эта строка выполнится только при подтверждении сообщения."

Когда использовать: в интерактивных утилитах или когда требуется подтверждение от оператора.

Inquire -powershell erroraction

SilentlyContinue

Не выводит ошибку в хост, но добавляет её в массив $Error — полезно, если нужно зарегистрировать ошибку, но не прерывать поток вывода.

Get-ChildItem C:\nonexistentfolder -ErrorAction SilentlyContinue
Write-Output "Эта строка выполнится, даже если произошла ошибка; она будет в $Error."

Когда использовать: когда нужно «молчаливо» обработать ошибку позже, например, записать в лог.

Sliently continue -powershell erroraction

Suspend

Работает только в PowerShell Workflow и приостанавливает выполнение для последующего возобновления.

Когда использовать: в workflow-сценариях с долгоживущими задачами и контрольными точками.

Практические шаблоны и альтернативы

  • Try/Catch: сочетайте -ErrorAction Stop с конструкцией Try/Catch, чтобы надёжно обрабатывать ошибки.
try {
  Get-ChildItem C:\nonexistentfolder -ErrorAction Stop
} catch {
  Write-Error "Не удалось получить список: $_"
}
  • -ErrorVariable: собирает ошибки в указанную переменную для последующего анализа.
Get-ChildItem C:\nonexistentfolder -ErrorAction SilentlyContinue -ErrorVariable myErr
if ($myErr) { Write-Output "Была ошибка: $($myErr[0].Exception.Message)" }
  • Глобальное изменение: $ErrorActionPreference = ‘Stop’ — влияет на всю сессию; использовать осторожно.

Чит-лист (cheat sheet)

ПараметрПоведениеПопадает в $Error
ContinueСообщить и продолжитьДа
IgnoreНе сообщать, продолжитьНет
StopПрекращение выполненияДа
InquireЗапрос у пользователяДа
SilentlyContinueНе сообщать, но записатьДа
SuspendПриостановить (workflow)Да

Ментальные модели и советы

  • Ключевой вопрос: критична ли ошибка для дальнейших шагов? Если да — Stop + Try/Catch. Если нет — Continue или SilentlyContinue.
  • Для автоматизации выбирайте предсказуемость: явные -ErrorAction и -ErrorVariable лучше, чем полагаться на поведение по умолчанию.
  • Inquire применим только при интерактивной работе с пользователем.

Дерево принятия решения

flowchart TD
  A[Ошибка возможна?] --> B{Критична ли?}
  B -- Да --> C[Использовать -ErrorAction Stop]
  B -- Нет --> D{Нужно ли логировать?}
  D -- Да --> E[-ErrorAction SilentlyContinue + -ErrorVariable]
  D -- Нет --> F[-ErrorAction Ignore/Continue]
  C --> G[Обработать в Try/Catch]
  E --> H[Анализировать $ErrorVariable]

Роли и контрольный список

  • Системный администратор:
    • Явно задавать -ErrorAction в автомассивах.
    • Логировать ошибки через -ErrorVariable или Write-Error.
  • Разработчик скриптов:
    • Оборачивать критичные вызовы в Try/Catch.
    • Не менять $ErrorActionPreference глобально в общих скриптах.
  • Инженер автоматизации:
    • Использовать -ErrorAction Stop для предсказуемой обработки и уведомлений.

Совместимость и примечания

Важно: старые версии Windows PowerShell и PowerShell Core имеют схожее поведение по ErrorAction, но Suspend поддерживается только в Workflow. Если скрипт будет запускаться в разных окружениях, тестируйте поведение ошибок в целевой версии PowerShell.

Краткое резюме

  • -ErrorAction управляет локальным поведением при ошибках; значения: Continue, Ignore, Stop, Inquire, SilentlyContinue, Suspend.
  • Для надёжной обработки ошибок используйте -ErrorAction Stop совместно с Try/Catch.
  • Для логирования ошибок используйте -ErrorVariable или SilentlyContinue.

Важно: в автоматизированных процессах избегайте молчаливого пропуска ошибок без логирования.

1-строчный глоссарий:

  • ErrorActionPreference — глобальная настройка поведения при ошибках.
  • Терминирующая ошибка — останавливает выполнение команды.
  • $Error — массив последних ошибок в сессии.
  • -ErrorVariable — параметр для сохранения ошибок в переменную.

Если у вас остались вопросы или нужно помочь с конкретным сценарием — опишите задачу в комментарии, и мы подскажем подходящую комбинацию -ErrorAction, Try/Catch и логирования.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка Outlook для Windows — подробный гид
Почта и коммуникации

Настройка Outlook для Windows — подробный гид

Преобразовать PNG в PDF на Windows 10/11
Инструкции

Преобразовать PNG в PDF на Windows 10/11

Резервное копирование Microsoft 365: как защитить данные
IT безопасность

Резервное копирование Microsoft 365: как защитить данные

Как скачать видео с Paramount+ для офлайн‑просмотра
Стриминг

Как скачать видео с Paramount+ для офлайн‑просмотра

Как открыть файл .aspx — инструменты и советы
Файлы

Как открыть файл .aspx — инструменты и советы

Как просмотреть активные сетевые подключения в Windows
Windows

Как просмотреть активные сетевые подключения в Windows