Как перехватить необработанную ошибку в PowerShell - PullRequest
1 голос
/ 29 января 2012

Я пытаюсь обработать исключительную ошибку, вызванную неправильным использованием имени пользователя и пароля с командлетами Microsoft Online PowerShell (изнутри на веб-сайте ASP.NET).Вот фрагмент кода:

PowerShell.Runspace = myRunSpace

Dim connect As New Command("Get-MSOnlineUser")
connect.Parameters.Add("Enabled")

Dim secureString As New System.Security.SecureString()
Dim myPassword As String = "Password"

For Each c As Char In myPassword
        secureString.AppendChar(c)
Next

connect.Parameters.Add("Credential", New PSCredential("admin@username.apac.microsoftonline.com", secureString))
PowerShell.Commands.AddCommand(connect)

Dim results As Collection(Of PSObject) = Nothing
Dim errors As Collection(Of ErrorRecord) = Nothing

results = PowerShell.Invoke()

Try
        results = PowerShell.Invoke()
Catch ex As Exception

End Try

errors = PowerShell.Streams.[Error].ReadAll()

Если я удаляю блок Try / Catch, я получаю ошибку необработанного исключения: учетные данные недействительны.Проверьте имя пользователя и пароль и повторите попытку.Однако в блоке Try / Catch ни коллекции результатов, ни ошибок не содержат ничего.

Как правильно перехватить эту ошибку, чтобы я мог предоставить пользователю «Неверное имя пользователя или пароль»?

1 Ответ

4 голосов
/ 29 января 2012

То, что вы ищете:

$_.Exception.Message

Эта переменная содержит последнюю ошибку исключения. Поэтому в чистом PowerShell я делаю свою обработку ошибок, как:

try
{
   #Some cmdlet likely to throw exception
}
catch [system.exception]
{
   Write-host "Exception String:"+$($_.Exception.Message)"
   #do some error handling
} 

С уважением Arcass

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...