У меня есть сценарий powershell, который используется для подключения к базе данных Oracle, из которого я буду запрашивать определенные поля.Сценарии начинаются следующим образом:
[System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient")
Который при выполнении через командную строку
PS C:\Users\MyuserID\Documents\DBtest> .\DBtest.ps1
дает следующий вывод:
GAC Version Location
--- ------- --------
True v4.0.30319 C:\Windows\Microsoft.Net\assembly\GAC_64\System.Data.OracleClient\v4.0_4.0.0.0__b77a5c561934e0...
За этим следует определенный оператор выборакоторые работают, как ожидалось, и возвращаются со строками, которые мы запросили
Однако, когда я пытаюсь выполнить то же самое в шаге сборки Jenkins Build либо путем вставки команды внутри шага сборки или вызова ее по абсолютному пути, я получаюэто как результат:
Started by user MyuserID
Building in workspace E:\Datapower\Jenkins\workspace\powershell_remote_execute
[powershell_remote_execute] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'D:\TEMP\jenkins5910047931722903259.ps1'"
GAC Version Location
--- ------- --------
True v4.0.30319 C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data.O...
Exception calling "Open" with "0" argument(s): "Attempt to load Oracle client
libraries threw BadImageFormatException. This problem will occur when running
in 64 bit mode with the 32 bit Oracle client components installed."
At C:\Users\MyuserID\Documents\DBtest\DBtest.ps1:13 char:3
+ $connection.Open()
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException
Finished: SUCCESS
Не требуется много времени, чтобы понять, что Jenkins выбирает 32-битные бинарные файлы для подключения, когда предполагается выбрать 64-битный:
GAC Version Location
--- ------- --------
True v4.0.30319 C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data.O...
Редактировать: я не вызываю явно исполняемый файл x86, я просто передаю. command или filepath к команде
Может кто-нибудь подсказать мне, как решить эту проблему.