#windows #powershell
Вопрос:
Недавно я начал переходить к использованию PowerShell 7 для своих нужд в написании сценариев, так как большинство необходимых мне модулей теперь совместимы.
Однако модуль «MSOnline» еще не обновлен, и они рекомендуют использовать этот -UseWindowsPowerShell
параметр при импорте модуля.
Это абсолютно здорово, и модуль можно использовать (почти) в полную силу. Однако -ErrorVariable
параметр, похоже, не работает, и поэтому я не могу выполнить какую-либо обработку ошибок.
Смотрите ниже код для примера того, что не работает:
Import-Module MSOnline -UseWindowsPowerShell
Connect-MsolService -ErrorAction SilentlyContinue -ErrorVariable msolError
Write-Host $msolError
Кажется, что -ErrorAction
параметр соблюдается, но я, похоже, ничего не могу получить внутри переменной ошибки.
Кто-нибудь знает, можно ли каким-то образом получить значения ошибок модуля, загруженного подобным образом?
Комментарии:
1. Что произойдет, если вы попытаетесь вывести
$Error[0]
данные ?2. К сожалению, он пуст
3. Выдает ли командлет ошибку, если вы не включили
-ErrorAction
параметр? ДействительноConnect-MSOLService
ли это провал?4. Если не указано действие с ошибкой, вывод ошибки выводится на консоль. Однако я попытался установить его в качестве переменной
$output = Get-MsolService
и распечатать таким образом, но вывода нет.
Ответ №1:
-ErrorAction SilentlyContinue
будет подавлять любые сообщения об ошибках. Удалите его из команды, чтобы получить вывод.
Команда должна быть: Connect-MsolService -ErrorVariable "msolError"
Просто вызовите $msolError, чтобы просмотреть ошибку.
Комментарии:
1. Это неправда.
-ErrorAction SilentlyContinue
подавляет отображение сообщений об ошибках, но не препятствует-ErrorVariable
заполнению. Пример также не работает, так как сообщение об ошибке просто выводится, а переменная не заполняется.