我有以下情况:
我有一个Powershell脚本foo.ps1
在这个脚本中,我想调用bar.jar
3. Bar.jar针对Oracle DB执行查询
4.该查询的结果应该传递回foo.ps1
我使用jar进行数据库调用的原因是因为我安装了32位Oracle库,但是我无法强制Powershell以32位模式运行。我已经尝试了类似的解决方案
How to execute powershell script in 64 bit machine?
然而,虽然它在控制台中说它切换到32位模式,但我仍然得到异常“尝试加载Oracle客户端库引发BadImageFormatException。在安装了32位Oracle客户端组件的64位模式下运行时会出现此问题。”
干杯!
答案 0 :(得分:1)
我使用了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