Лучший отвечающий
Как обработать исключения exchange в сессии powershell (не EMS!)

Вопрос
-
Такой вопрос.
Работаю с Microsoft Exchange в сессии powershell, устанавливая подключение с помощью new-PSSession
Пытаюсь сделать обработку различных ситуаций при вызове кмдлета Get-Recipient.
Например, если при вызове кмдлета указан нерабочий контроллер домена происходит следующее
Get-Recipient aaaa -ErrorAction stop -DomainController dc1 An Active Directory error 0x51 occurred when trying to check the suitability of server 'dc1'. Error: 'Active directory response: The LDAP server is unavailable.' At C:\Users\user\Documents\WindowsPowerShell\Modules\ExchangeModule\ExchangeModule.psm1:25039 char:9 + $steppablePipeline.End() + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-Recipient], SuitabilityDirectoryException + FullyQualifiedErrorId : [Server=mbx1,RequestId=27f70386-fd1d-4e33-8e10-beb3c9aadeb5,TimeStamp=28.03.2015 5:14:50] [FailureCategory=Cmdlet-SuitabilityDirectoryException] B41D026,Microsoft.Exchange.Manageme nt.RecipientTasks.GetRecipient + PSComputerName : mbx1.domain.local
Хочу сделать обработку этого исключения, пишу следующее
try{ Get-Recipient aaaa -ErrorAction stop -DomainController dc3 } catch [SuitabilityDirectoryException]{ Write-Debug "Контроллер не отвечает" } catch{ #что-то общее }
получаю
Unable to find type [SuitabilityDirectoryException]. Make sure that the assembly that contains this type is loaded.
Как правильно указать тип исключения?
Пробовал и [Microsoft.Exchange.Management.RecipientTasks.GetRecipient] но тоже без толку.28 марта 2015 г. 6:00
Ответы
-
Проблема в том, что вы получаете не само исключение, а только сообщение о нем, т.к. исключение происходит на удаленном сервере, а в вашу сессию приезжает в результате serialization.
Сазонов Илья http://isazonov.wordpress.com/
- Помечено в качестве ответа KazunEditor 2 апреля 2015 г. 8:50
28 марта 2015 г. 6:31Модератор -
$ErrorActionPreference = "Stop" $DebugPreference = "Continue" try { Get-Recipient aaaa -DomainController dc3 } catch { switch($_.CategoryInfo.Reason) { "SuitabilityDirectoryException" {Write-Debug "Контроллер не отвечает"} default {Write-Debug "ERROR"} } }
- Помечено в качестве ответа KazunEditor 2 апреля 2015 г. 8:50
29 марта 2015 г. 6:44Отвечающий
Все ответы
-
Проблема в том, что вы получаете не само исключение, а только сообщение о нем, т.к. исключение происходит на удаленном сервере, а в вашу сессию приезжает в результате serialization.
Сазонов Илья http://isazonov.wordpress.com/
- Помечено в качестве ответа KazunEditor 2 апреля 2015 г. 8:50
28 марта 2015 г. 6:31Модератор -
$ErrorActionPreference = "Stop" $DebugPreference = "Continue" try { Get-Recipient aaaa -DomainController dc3 } catch { switch($_.CategoryInfo.Reason) { "SuitabilityDirectoryException" {Write-Debug "Контроллер не отвечает"} default {Write-Debug "ERROR"} } }
- Помечено в качестве ответа KazunEditor 2 апреля 2015 г. 8:50
29 марта 2015 г. 6:44Отвечающий