Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Обработка ошибок (http://forum.oszone.net/showthread.php?t=342926)

DJ Mogarych 13-11-2019 12:27 2896054

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

Есть строчка подключения к серверу 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 делать, это громоздко и вроде как не рекомендуется.

Elven 13-11-2019 14:22 2896079

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 }


DJ Mogarych 13-11-2019 16:50 2896097

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

Переделал в такой вариант:
Код:

$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}



Время: 17:06.

Время: 17:06.
© OSzone.net 2001-