vb.net - 如何在PowerShell中捕获未处理的错误

标签 vb.net powershell exception-handling error-handling

我正在尝试处理Microsoft Online PowerShell cmdlet使用错误的用户名和密码时(从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块,则会收到未处理的异常错误:凭据无效。检查用户名和密码,然后重试。但是,使用“尝试/捕获”块时,结果或错误集合都不包含任何内容。

如何正确捕获此错误,以便向用户显示“无效的用户名或密码”?

最佳答案

您正在寻找的是:

$_.Exception.Message

此变量保存最新的异常错误。
因此,在纯PowerShell中,我执行以下错误处理:
try
{
   #Some cmdlet likely to throw exception
}
catch [system.exception]
{
   Write-host "Exception String:"+$($_.Exception.Message)"
   #do some error handling
} 

问候
弓箭手

关于vb.net - 如何在PowerShell中捕获未处理的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9052634/

相关文章:

mysql - 选择计数不同语法,vb.net

string - 将字符串替换为格式字符串

sorting - Powershell Sort-Object 是否使用稳定排序

spring - Spring-Webflux,如何在@ExceptionHandler中获取请求作为参数

java - 在 Java 生产代码中使用 Junit Assert API 可以吗

vb.net - 使用 CheckBox 切换 TextBox 的屏蔽和取消屏蔽

c# - 在 javascript 中查找控件

powershell - 无法调用此函数,因为当前主机没有实现它

powershell - 调用/设置名称中带有变量的变量

c# - 如果从 C# 中的 try 或 catch block 返回,finally block 是否会被执行?如果是这样,是在返回之前还是之后?