InterSystems ODBC 错误导致 Powershell 崩溃

InterSystems ODBC error crashes Powershell

我正在尝试使用 Powershell 通过 InterSystems ODBC 驱动程序获取一些数据,但查询执行时出现错误(01004“字符串数据,右 运行 已分类”)。我想忽略它(或在 PS 中处理此错误)并继续执行脚本。这是我的代码的一部分:

$c = new-object system.data.odbc.odbcconnection
$c.connectionstring = "..."
$c.open()

$cmd = New-object System.Data.Odbc.OdbcCommand( $sql , $c )
$dst = New-Object System.Data.DataSet
$oda = New-Object System.Data.Odbc.OdbcDataAdapter( $cmd )
$oda.Fill( $dst )

当我使用 -NoExit 参数 运行 脚本时,这有效,即不会崩溃并获取数据,即:

Powershell -NoExit Y:\test.ps1

否则,Powershell 崩溃,控制台关闭。我需要从另一个脚本 运行 这个脚本并最终收到结果。最后,我想关闭控制台 window(现在我通过 exit 调用它)。

到目前为止,我尝试了 try-catch 块、抛出、Invoke-Expressionreturn 函数等。我搜索了解决此类错误的解决方案,但没有结果。

我找到了解决方案(或者可能是解决方法)。最好使用 ADODB 对象而不是 System.Data.Odbc。最直接的代码如下所示:

$connection = New-Object -ComObject ADODB.Connection
$command    = New-Object -ComObject ADODB.Command
$recordset  = New-Object -ComObject ADODB.Recordset

$connection.CursorLocation = 3
$connection.ConnectionString = $c_s
$connection.Open()

$command.ActiveConnection = $connection
$command.CommandText = $sql
$command.CommandType = 1

$recordset.ActiveConnection = $connection
$recordset.Open( $command )