We rise up for the things we believe in over and over again

Опять же, мелкая запись-шпаргалка: как подавить вывод сообщений об ошибках в командлетах серии Get-AD*:

В случае, если в AD нет группы с именем, заданным в переменной $GroupName, мы получим стандартное сообщение PS об ошибке:

Get-adgroup : Cannot find an object with identity

В то же время

при отсутствии той же группы не выдаст вообще никаких ошибок. Даже обработчик -ErrorAction не нужен.

Но и это еще не все. Допустим, есть конструкция:

Если в AD нет группы с именем в переменной $GroupName, то мало того, что мы получим необрабатываемую таким образом ошибку, так еще и не отработает НИ ОДНА ВЕТКА оператора If.

Резюме: фильтры - наши лучшие друзья.

@музыка: Stive Morgan - Mystical Wood

@темы: PowerShell, Scripting

Комментарии
10.03.2020 в 17:00

Тотальная неудачница и убийца жёстких дисков.
Если в AD нет группы с именем в переменной $GroupName, то мало того, что мы получим необрабатываемую таким образом ошибку, так еще и не отработает НИ ОДНА ВЕТКА оператора If.

Ну как бы, если функция может кинуть исключение или ещё как-то сгенерировать ошибку, то пихать её в If явно не следует.
10.03.2020 в 17:05

We rise up for the things we believe in over and over again
Линда Кайе, так в том и дело, что для этого и был сделан штатный обраточик -erroraction, где прямо говорится, что делать в случае ошибки. Но конкретно в этой группе командлетов он просто не работает.
11.03.2020 в 03:32

Тотальная неудачница и убийца жёстких дисков.
Ну, обычно, даже если ошибка игнорится, весь блок If пропускается вместе с оператором, вывзавшим ошибку.
11.03.2020 в 03:34

Тотальная неудачница и убийца жёстких дисков.
Хотя, VB, например, выполняет первый блок (не тот, который Else). Короче, тут полно нюансов, лучше так не делать.