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 делать, это громоздко и вроде как не рекомендуется.
|
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.
© OSzone.net 2001-