1

我有以下场景:
1. 我有一个 Powershell 脚本 foo.ps1
2. 在这个脚本中,我想调用 bar.jar
3. Bar.jar 对 Oracle DB 运行查询
4. 该查询的结果应该是传回 foo.ps1

我使用 jar 进行 DB 调用的原因是因为我安装了 32 位 Oracle 库,但是我不能强制 Powershell 在 32 位模式下运行。我已经尝试过
如何在 64 位机器上执行 powershell 脚本之类的解决方案?
但是,尽管它在控制台中显示它切换到 32 位模式,但我仍然收到异常“尝试加载 Oracle 客户端库引发 BadImageFormatException。在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。”

干杯!

4

1 回答 1

2

我使用了 32 位 PowerShell 控制台中的 32 位 ODAC 库。

[System.Reflection.Assembly]::LoadWithPartialName('Oracle.DataAccess')

使用上述行导入后,您可以创建 Oracle 对象并连接到数据库并运行查询。

您也可以在 32 位后台作业中运行它。

Start-Job -ScriptBlock $oracle_script_block -RunAs32 | Wait-Job | Receive-Job

如果您仍想使用 Java 代码,您可以像这样运行它:

$output = & java.exe -jar <oracle JAR>
Write-Host "Exit code: $LASTEXITCODE"
Write-Host "Output: $output"

正如 zdan 指出的那样,确保 java.exe 是 32 位的。

& java.exe -version
于 2013-05-20T06:30:54.437 回答