Чтобы исправить это, ищите неправильный синтаксис
- Если Try-Catch не работает в PowerShell, необходимо проверить неверный синтаксис и значения действия при ошибке.
- В этом руководстве объясняются различные способы решения проблемы.
![Попробуйте поймать powershell не работает](/f/071b04be492a1ab7c7bdbab5c3b280a3.png)
ИксУСТАНОВИТЕ, НАЖИМАЯ НА СКАЧАТЬ ФАЙЛ
- Скачать инструмент восстановления ПК Restoro который поставляется с запатентованными технологиями (патент доступен здесь).
- Нажмите Начать сканирование чтобы найти проблемы Windows, которые могут вызывать проблемы с ПК.
- Нажмите Починить все для устранения проблем, влияющих на безопасность и производительность вашего компьютера.
- Restoro был скачан пользователем 0 читателей в этом месяце.
Оператор Try-Catch в PowerShell обрабатывает ошибки и исключения в вашем коде. Если Try-Catch не работает как исключение в PowerShell, это может расстраивать.
В этом руководстве мы рассмотрим все способы решения проблемы, а также возможные причины проблемы. Давайте начнем!
Что вызывает неработающую проблему Try-Catch в PowerShell?
Могут быть разные причины, по которым оператор не работает в PowerShell. Вот некоторые из наиболее распространенных:
- Набор ErrorAction по умолчанию – Если ErrorAction настроен на Продолжить, то Try-Catch не будет работать должным образом.
- Синтаксические ошибки – Если используется неправильный синтаксис, неправильное форматирование или отсутствуют ключевые слова, Try-Catch не будет работать.
- Поведение командлета или функции – Некоторые функции и командлеты имеют свое поведение при обработке ошибок, которое может быть несовместимо с Try-Catch.
- Неправильная логика или использование переменных - При ненадлежащем использовании переменные или неверная логика, то Try-Catch не сработает.
Что делать, если Try-Catch не работает в PowerShell?
1. Проверить синтаксис
- Во-первых, вам нужно проверить, использовали ли вы правильный синтаксис для используемой вами версии PowerShell.
- Затем убедитесь, что вы разместили блоки Try и Catch в правильной последовательности.
- Основной синтаксис Try-Catch описан ниже. Замените # код для запуска здесь кодом и # код обработки ошибок здесь кодом обработки ошибок:
![](/f/63cd6de3b94b1e04f16284eb31e373b5.png)
Пытаться {
# код для запуска здесь
}
Ловить {
# здесь код обработки ошибок
}
2. Проверьте, перехватываете ли вы конкретную ошибку
Вам нужно проверить, перехватываете ли вы определенные ошибки, которые хотите обработать, а не все ошибки. Выполните следующие действия, чтобы сделать то же самое:
- нажмите
Окна
ключ, тип PowerShell, и нажмите Запустить от имени администратора. - Чтобы отловить ошибку, вам нужно использовать $ в блоке Catch для доступа к информации о возникшей ошибке. Давайте проверим тот же пример, чтобы лучше понять:
Пытаться {
Get-ChildItem -Path C:\DoesNotExist
}
Ловить {
если ($_.Исключение. GetType().Name -eq "DirectoryNotFoundException") {
Запись-вывод «Каталог не найден».
}
еще {
выбросить $_.Исключение|
}
}
3. Установить значение ErrorAction
Значение по умолчанию для ErrorAction — Продолжить; однако для работы Try-Catch необходимо установить для ErrorAction значение Stop. Для этого выполните следующие действия:
- Открыть PowerShell как администратор.
- Вам необходимо использовать командлет Set-StrictMode или параметр ErrorAction для отдельных командлетов. Чтобы лучше понять это, давайте рассмотрим пример:
![Попробуйте поймать с помощью ErrorAction Stop PowerShell](/f/f5e154269a32c1f4c12692f113b33994.png)
Пытаться {
Get-ChildItem -Path C:\DoesNotExist -ErrorAction Stop
}
Ловить {
Запись-вывод $_.Exception. Сообщение
}
- Вот как восстановить ключ BitLocker из OneDrive
- Как использовать Phone Link для iPhone в Windows 11
- DaVinci Resolve Высокая загрузка ЦП: как ее уменьшить
4. Используйте правильный тип исключения
![](/f/6248def6d4925ac025636680011ef458.png)
При использовании Try-Catch важно использовать правильные исключения, так как он может обрабатывать только исключения класса System. Тип исключения. Если вы использовали не-System. Ошибки исключения, то Try-Catch не сработает.
Что касается несистемных. Exception, вам нужно использовать механизм обработки ошибок NET Framework или перехватить ошибку.
5. Избегайте завершения скрипта
Если ваш скрипт завершается до достижения блока Catch, Try-Cach не сможет обработать ошибку. Чтобы избежать завершения скрипта, выполните следующие действия:
- Запуск PowerShell с правами администратора.
- Вам необходимо использовать Продолжать заявление после Ловить блокировать. Давайте разберемся на примере:
![попробуй поймай наконец](/f/00a5bbf415d4707958ef4dff68c35761.png)
Пытаться {
Get-ChildItem -Path C:\DoesNotExist
}
Ловить {
Запись-вывод $_.Exception. Сообщение
Продолжать
}
6. Используйте Try-Catch-Finally
Если оператор Try-Catch по-прежнему не работает, вместо него можно использовать конструкцию Try-Catch-Finally. Это гарантирует, что ваш код будет выполнен до конца, даже если возникнет исключение.
- Открыть PowerShell как администратор.
- Введите команду с Попробуй-поймай-наконец-то. Вот пример, чтобы лучше понять сценарий:
![](/f/4174c60600d0185830b2e2928e3716eb.png)
Пытаться {
# Ваш код здесь
}
Поймать [Система. Исключение] {
# Здесь код обработки исключений
}
Окончательно {
# Код очистки здесь
}
Итак, вот способы, с помощью которых вы можете решить проблему с неработающей функцией Try Catch в PowerShell. Если у вас есть какие-либо вопросы, связанные с Try-Catch, укажите их в разделе комментариев ниже. Мы будем рады помочь!
Если вы хотите узнать, как предотвратить закрытие PowerShell после запуска скрипта, см. ты можешь прочитать это.
Все еще есть проблемы? Исправьте их с помощью этого инструмента:
СПОНСОР
Если приведенные выше советы не помогли решить вашу проблему, на вашем ПК могут возникнуть более серьезные проблемы с Windows. Мы рекомендуем загрузка этого инструмента для ремонта ПК (оценка «Отлично» на TrustPilot.com), чтобы легко их решать. После установки просто нажмите кнопку Начать сканирование кнопку, а затем нажмите на Починить все.