Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Обработка ошибок

Ответить
Настройки темы
PowerShell - [решено] Обработка ошибок

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день, коллеги!

Есть строчка подключения к серверу Exchange:
Код: Выделить весь код
Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch1.domain.ru/PowerShell/ -Authentication Kerberos) -DisableNameChecking
Всего серверов три штуки: exch1, exch2 и exch3.

Как сделать, чтобы при ошибке подключения к exch1 пробовало подключаться к exch2, и при ошибке - к exch3?

Можно ли как-то сделать здесь if-then? Не хочется вложенный try-catch делать, это громоздко и вроде как не рекомендуется.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 12:27, 13-11-2019

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


try-catch делать лучше всегда, но не для этого.
пошика под рукой нет, поэтому приблизительно на глаз дожна сработать такая стрёмная конструкция:
Код: Выделить весь код
$pssession = (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch1.domain.ru/PowerShell/ -Authentication Kerberos) & if (!$?) {
$pssession = (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch2.domain.ru/PowerShell/ -Authentication Kerberos) & if (!$?) {
$pssession = (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch3.domain.ru/PowerShell/ -Authentication Kerberos) & if (!$?) {
$pssession = $true}
}}
if ($pssession) {write-host "к третьему тоже не подключлся :("} else {
Import-PSSession ($pssession) -DisableNameChecking }

Последний раз редактировалось Elven, 13-11-2019 в 15:03.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:22, 13-11-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Спасибо! $? - это круто!

Переделал в такой вариант:
Код: Выделить весь код
$c = 1
do {$pssession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch$($c).domain.ru/PowerShell/ -Authentication Kerberos -ErrorAction SilentlyContinue; $c++}
until ($? -or $c -gt 3)
if (!$?) {write-host -fore red "Не удалось подключиться ни к одному серверу Exchange"; sleep 2; exit}
Import-PSSession $pssession -DisableNameChecking -ErrorAction SilentlyContinue
if (!$?) {write-host -fore red "Ошибка импорта удалённой сессии Powershell"; sleep 2; exit}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 14-11-2019 в 10:37.


Отправлено: 16:50, 13-11-2019 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Обработка ошибок

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Перехват ошибок lox-ness Скриптовые языки администрирования Windows 3 28-10-2019 07:09
PowerShell - [решено] обработка ошибок lox-ness Скриптовые языки администрирования Windows 1 14-01-2018 19:45
Разное - Череда ошибок Dius Microsoft Windows 8 и 8.1 1 24-12-2014 09:26
Медиа - [решено] Картинки ошибок Anton1995 Хочу все знать 4 24-05-2010 23:29
Исправление ошибок Mikke Microsoft Windows 95/98/Me (архив) 10 03-06-2004 05:34




 
Переход