|
0 / 0 / 0
Регистрация: 01.12.2017
Сообщений: 16
|
|
Запись в лог29.01.2018, 14:24. Показов 13999. Ответов 18
Метки нет (Все метки)
Вопрос поднимала в рамках другой темы. Так как там это обсуждение не в тему, создала новую тему.
Хотела уточнить. Хочу вносить информацию о некоторых операциях. Например, успешно ли скопировался файл, успешно ли распаковался архив. При этом мне нужна фиксация в логе, но чтобы при этом работа скрипта не прерывалась, а продолжалась дальше. Чтобы отрабатывала ошибка в Try/Catch нужно -ea Stop указывать, но тогда прервется ведь дальнейшее выполнение, если например, не удалось распаковать какой-то один архив. Если не ставить -ea Stop, то он продолжает как будто ошибки не было. Как нужно фиксировать успешное выполнение в таких случаях?
0
|
|
| 29.01.2018, 14:24 | |
|
Ответы с готовыми решениями:
18
Запись действия Start-Process в лог
Запись в лог |
|
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||||||||||||||||||||||||||||||||||||||||||||||
| 29.01.2018, 17:05 | ||||||||||||||||||||||||||||||||||||||||||||||
|
Если честно, из всего вопроса понятно лишь желание заносить в журнал (и то непонятно системный или просто текстовый файл) данные о произведенных операциях. Попробую объяснить популярно на пальцах принципы обработки исключений в PS. А принципы в нем кому-то могут показаться довольно избыточными, но это только на первый взгляд. Чтобы не запутаться в дебрях, начать, пожалуй стоит с потоков. В зависимости от версии PS, последний поддерживает следующие потоки:
1 - все пучком 2 - эррор (не путать с эротикой) 3 - ворнинг (ахнунг, пердуперждение - нужное подчеркнуть) 4 - вербоз (или закулисье протекающей операции, см. параметр -Verbose) 5 - дебаг (по-русски отладка, хотя отладчика в PS как не было, так и нет) Первые два из упомянутых потока поддерживаются во всех версиях без исключения, как никак без них журналирование ошибок было бы попросту невозможным. Чтобы понять как они работают, посмотрим на следующий пример:
0
|
||||||||||||||||||||||||||||||||||||||||||||||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|||||||||||||||||||||||
| 29.01.2018, 19:48 | |||||||||||||||||||||||
|
greg zakharov, конечно, как альтернатива для Start-Transcript и Stop-Transcript, показанный вами пример с потоками это отличный вариант. Но, чаще от журналов требуется не просто запись сообщений с экрана, а ещё и дата, время, сообщение об ошибке и очень часто различная вспомогательная информация (свойства объектов, значение переменных и т.п.)
Вот, например что-то подобное (не подходит по какой то причине try, пусть будет trap или проверка $Error):
Кликните здесь для просмотра всего текста
Или вы имели ввиду, что-то ещё? Вообще же, использовать trap нужно очень внимательно, как вы верно написали man about_trap, т.к. есть очень тонкие моменты с областями действия (scope) и если есть глобальный trap можно легко вылететь из функции в основное тело скрипта. Плюс не следует забывать, что если есть только один trap в начале, тогда он будет ловить все возникающие ниже ошибки - иногда это очень удобно, а иногда просто не допустимо... Добавлено через 10 минут Если у вас распаковка архивов идёт в foreach цикле, то Try/Catch сработает на ошибку, а затем продолжится выполнение скрипт-блока foreach со следующим объектом...
0
|
|||||||||||||||||||||||
|
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||||
| 29.01.2018, 20:14 | ||||
0
|
||||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|||
| 29.01.2018, 21:51 | |||
|
В результате в $Error хранится уже два объекта: $Error[0] (ошибка возникшая в скрипт блоке trap) - gci : Не удается найти путь "C:\Temp\foo1"... и $Error[1] - gci : Не удается найти путь "C:\Temp\foo"... Соответственно и $Error.Count будет равен 2, как впрочем и если обе команды будут gci foo Не по теме: У Exchange-сервера есть командлеты, которые при самой незначительной проблеме вываливают 3-4 экрана stacktrace-откровений и я представил себе какой получится лог при таком подходе :)
0
|
|||
|
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
|||
| 29.01.2018, 22:10 | |||
0
|
|||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||
| 29.01.2018, 22:29 | ||
|
Не по теме: Но судя по предвзятому ко мне отношению, "Вы также будете утверждать, дескать, нет" - вывод $Error я написал сам, а скриншот нарисовал в mspaint.
0
|
||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||
| 29.01.2018, 22:35 | ||||||
|
И да - $Error.Clear() - естественно отрабатывает
![]()
0
|
||||||
|
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||
| 29.01.2018, 22:37 | ||
0
|
||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||
| 29.01.2018, 22:53 | ||
![]() Добавлено через 10 минут
0
|
||
|
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||||
| 29.01.2018, 22:58 | ||||
Добавлено через 1 минуту
Не по теме: Если так, давайте перейдем в ЛС, там и объяснимся/
0
|
||||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|||||||||||||||||||||||
| 30.01.2018, 00:35 | |||||||||||||||||||||||
Давайте сравним - какие у вас версии OS и PS? PowerShell 5.1 Кликните здесь для просмотра всего текста
PowerShell 4 Кликните здесь для просмотра всего текста
PowerShell 2 Кликните здесь для просмотра всего текста
Добавлено через 1 час 8 минут Не по теме:
Если вы заметили, не смотря на все попытки (причём не только ваши) перевести общение на форуме на личности, меня интересуют исключительно техническая сторона обсуждаемых вопросов. На бессмысленные выяснения личных отношений я тратить время не собираюсь. И ещё раз повторю, что кроме технических деталей, никаких личных мотивов в моих вопросах нет. И очень надеюсь, что вы greg zakharov, уважаемый мной, как профессионал в своей области, продолжите общение исключительно в техническом ключе. Модератора, просьба удалить оффтопик из этого сообщения. Другой возможности предоставить желаемых объяснений, у меня не было.
1
|
|||||||||||||||||||||||
|
Любознательный
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
|
| 30.01.2018, 10:37 | |
|
greg zakharov, справедливости ради:
В данном вопросе, по trap-у, KDE777 полностью прав.Инструкции trap{...} выполняются только при возникновении исключения во внешнем коде относительно самого trap-а
0
|
|
|
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,885
|
|
| 30.01.2018, 11:01 | |
|
In other words, your Trap construct has to be defined before the error happens; PowerShell won’t scan ahead to look for one.
Excerpt From: Don Jones, Jeffery Hicks, Richard Siddaway. “PowerShell in Depth, Second Edition.” iBooks.Добавлено через 5 минут а вот отрывок из другой книги: The trap statement can appear anywhere in a block of code. This means that it may be specified after a statement that generates an error and still handle that error. Windows PowerShell in Action, Second EditionКому верить ?
1
|
|
|
Любознательный
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
|||||||
| 30.01.2018, 11:31 | |||||||
![]() Ну, а если серьезно - что мешает проверить?
1
|
|||||||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|||||||||||||||||||||||||||||||||
| 30.01.2018, 11:43 | |||||||||||||||||||||||||||||||||
![]()
Но спор был совсем не о том, когда срабатывает trap, а о том что ошибка при выполнение кода из скрипт-блока trap'а не попадает в $Error. Но самый простейший пример этого не подтверждает:
Ваш пример и мой из предыдущего ответа, подтверждают (для меня внезапно) вторую цитату приведённую volodin661 из Windows PowerShell in Action, Second Edition.
0
|
|||||||||||||||||||||||||||||||||
|
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,885
|
|
| 30.01.2018, 11:49 | |
|
Что любопытно, так это то, что trap, об'явленный на всех углах устаревшим и
тяжким наследием царского режима, тем не менее включен в новейший powershell core.
0
|
|
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||||||||||||||||||
| 30.01.2018, 13:04 | ||||||||||||||||||||||
|
Не по теме:
Добавлено через 1 час 8 минут Если уж столько написали про trap, на всякий случай демонстрация областей действия (scope). Возможно, кому-то это пригодится. Если trap добавлен в основное тело скрипта (глобальная область) и есть функция, в которой свой trap не используется, при возникновение ошибке внутри функции её перехватит/обработает глобальный trap, а затем продолжит выполнение (при наличие Continue) в глобальной области, т.е. внутрь функции работа скрипта не вернётся:
Таким же образом, trap прерывает выполнение foreach циклов:
0
|
||||||||||||||||||||||
|
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||
| 31.01.2018, 16:36 | ||
0
|
||
| 31.01.2018, 16:36 | |
|
Помогаю со студенческими работами здесь
19
Запись лог файла Запись в лог по текущей расскладке Запись из формы в отдельный лог Запись ошибок пхп в лог файл Запись входа юзера в лог и другое.. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|