Как сделать так, чтобы скрипт Powershell уведомлял меня об ошибке?

У меня есть Powershell, который каждое утро запускается на сервере моей компании (используя планировщик задач). Я заметил, что иногда он сталкивается с ошибками и выдает сообщение об ошибке, когда я запускаю его вручную, но, поскольку я запускаю его утром, прежде чем кто-либо входит в офис, у меня в настоящее время нет возможности проверить, правильно ли он работает. В идеале я хотел бы, чтобы он отправил мне электронное письмо, содержащее текст из журнала консоли (или что-нибудь еще с описанием ошибки, если у кого-то есть идея получше). Я также был бы в порядке, если бы он просто сохранял журнал консоли в текстовом файле, пока я могу проверить его позже. Кто-нибудь может помочь?

Этот вопрос нуждается в дополнительной информации, прежде чем мы сможем помочь или определить, относится ли вопрос к теме здесь. Скорее всего, это проблема «суперпользователя», когда вы сталкиваетесь с проблемой или ограничением, специфичным для планировщика заданий (например, вы не можете запускать по требованию задачи, которые настроены на «запуск независимо от того, вошел ли пользователь в систему или нет").

TylerH 22.11.2022 23:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не видя кода вашего скрипта, сложно сказать наверняка. Но знаете ли вы о встроенной переменной $Error? Это может быть то, что вы ищете.

https://bobcares.com/blog/powershell-error-clear/

$Error.Count — проверяет количество ошибок, находящихся в данный момент в списке.

$Error[0] — предоставляет информацию о самых последних ошибках.

$Error.Clear() — удаляет все ошибки из списка.

Вы можете изменить свой скрипт, чтобы сначала очистить переменную с помощью $Error.Clear(), а затем запустить код и в конце проверить $Error.Count, а если больше нуля, проверить $Error[0] и записать ошибку в журнал.

Но опять же, все зависит от кода вашего скрипта. Если ваш скрипт выполняет внешние/не PowerShell команды, я не уверен, будут ли эти ошибки зафиксированы в этой переменной.

Если это не дает вам то, что вам нужно, взгляните на это:

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.host/start-transcript?view=powershell-7.3

Start-Transcript - Это запишет все, что пишется в консоль, в файл.

Stop-Transcript - Очевидно, что это остановит запись.

Примеры

PS C:\Users\smith\Documents> Start-Transcript
Transcript started, output file is C:\Users\smith\Documents\PowerShell_transcript.NEWT.v842NPjk.20221122174909.txt
PS C:\Users\smith\Documents>

или укажите свой собственный путь с помощью

PS C:\Users\smith\Documents> Start-Transcript -Path .\PST.txt
Transcript started, output file is .\PST.txt
PS C:\Users\smith\Documents>

Полезные параметры

-NoClobber предотвратит перезапись существующих файлов.

-Append будет добавлен к существующему файлу.

Другие вопросы по теме