почему 2> $ NULL не перенаправляет ошибки в NULL? - PullRequest
1 голос
/ 28 июня 2019

У меня есть следующее утверждение.

$CINPUT = $CINPUT.ToUpper() -replace '(^\s+|\s+$)','' -replace '\s+',' ' 2> $NULL

2> $NULL, похоже, вообще не перенаправляет ошибку в NULL, потому что я все еще получаю исключение.

Переменная не может быть проверена, поскольку значение не является допустимым значением для переменной CINPUT.

Я хочу игнорировать исключение и не знаю, как его использовать.-ErrorAction Stop в данном случае

Примечание: я знаю об этом, и это работает, но я не хочу использовать -erroractionpreference в качестве глобальной настройки для моего скрипта.

1 Ответ

1 голос
/ 28 июня 2019

2> $NULL может подавлять только ошибки, записанные в поток ошибок PowerShell .

Напротив, ваш оператор вызывает исключение .NET , которое проявляется как ошибка завершения оператора в PowerShell, которую вы можете обработать с помощью try / catch:

try {
  $CINPUT = $CINPUT.ToUpper() -replace '(^\s+|\s+$)','' -replace '\s+',' '
} catch {} # ignore the statement-terminating error

Как правило, перенаправление потока ошибок - 2> - будет успешным, только если команда выдает только нескончаемые ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...