$Error

Кроме описанной в предыдущем посте -ErrorVariable, есть еще одна возможность получить объект содержащий ошибку. Независимо от -ErrorVariable все ошибки произошедшие в PowerShell помещаются в специальную переменную $Error, которая кстати тоже является массивом. Причем при заполнении, последняя ошибка помещается в начало массива, под индексом 0, а все уже содержащиеся там ошибки смещаются. Иначе говоря посмотреть последнюю произошедшую ошибку можно вызвав $Error[0], а предпоследнюю — $Error[1]:

[PS <17> C:\Root] $Error[0]
Попытка деления на нуль.
At line:1 char:3
+ 1/ <<<< $null
[PS <18> C:\Root] $Error[0]
Попытка деления на нуль.
At line:1 char:3
+ 1/ <<<< $null
[PS <19> C:\Root] $Error[0].InvocationInfo.Line
1/$null

Максимальное количество ошибок содержащихся в переменной $Error задается с помощью другой переменной — $MaximumErrorCount и по умолчанию это количество равно 256. При достижении максимума, старые ошибки будут удаляться.

Раз уж заговорил о специальных переменных связанных с ошибками, упомяну еще одну:

$ErrorView определяет метод отображения объектов ошибок в консоли. У неё может быть два значения — «NormalView» (по умолчанию) и «CategoryView»:

[PS <29> C:\Root] $ErrorView
NormalView
[PS <30> C:\Root] dir c:\notexist
Get-ChildItem : Cannot find path 'C:\notexist' because it does not exist.
At line:1 char:4
+ dir <<<<  c:\notexist
[PS <31> C:\Root] $ErrorView = "CategoryView"
[PS <32> C:\Root] dir c:\notexist
ObjectNotFound: (C:\notexist:String) [Get-ChildItem], ItemNotFoundException

Дальше будет интереснее😉

Опубликовано в Learn, PowerShell, Scripting. 1 Comment »

Один ответ to “$Error”

  1. Camelot Says:

    Спасибо. Хочу сказать, возможность автоматического отслеживания ошибок во время работы скриптов — весьма интересная и крайне полезная тема вне зависимости от языка скрипта. Важно ведь в скрипте предусмотреть _все_ варианты развития событий при отработке скрипта. А без этого невозможно считать скрипт _самостоятельным_. Всё равно приходится вручную потом проверять его работу. Поэтому каждый уважающий себя писатель скриптов должен эффективно использовать работу с ошибками (хоть и жертвуя объёмом текста). И только тогда можно будет говорить про полную автоматизацию работы скриптов.🙂


Обсуждение закрыто.

%d такие блоггеры, как: