在一个会话中以32位执行一部分代码,而从64位Power Shell执行另一部分

问题描述

我正在启动到远程计算机(oracle db服务器)的powershell会话,以执行一些查询。在实际部署之前,需要执行一些部署前测试,例如检查与数据库的连接是否正常,ssh连接正常,sftp。在该会话中,调用了许多powershell脚本。我将尽力解释流程。首先,我们正在加载稍后使用的PS脚本,如下所示:

LogInfo("Load DatabaseActions")
$incFile = Resolve-Path .\deployment\DatabaseActions.ps1
. $incFile
                    
Write-Host "Setup Environment"
LogInfo("Load SSH")
$incFile = Resolve-Path .\deployment\SSH.ps1

这是 DatabaseActions.ps1 中代码的一部分:

Add-Type -Path "C:\somePath\Oracle.DataAccess.dll" 
Function TestDBConnection($connectString)
{
  //Code for opening a connection to the database
}

加载脚本后,将逐个执行测试。每个测试都有一个单独的脚本(数据库连接,ssh,sftp)。第一个测试是连接数据库。有一个名为 DatabaseConnectionTest.ps1 的脚本,在这里我只是从 DatabaseActions.ps1 调用一个函数:

$Result = TestDBConnection $RunSettings.ConnectionString

这里的问题是 Oracle-Client.dll 需要在32位Powershell中执行,而其他测试则需要在64位Powershell中执行。当我启动64位会话时,未正确加载Oracle dll。当我启动32位Powershell时,Oracle dll是不错的选择,但是由于我使用的是64位ssh客户端,因此它在ssh测试中落下。 :)我不知道是否可能。

像这样启动64位会话时,我尝试创建别名:

Set-Alias Start-PowerShell32 "$env:windir\syswow64\WindowsPowerShell\v1.0\powershell.exe"

,然后将代码包装在 DatabaseActions.ps1 中,如下所示:

Start-PowerShell32 { 
Add-Type -Path "C:\somePath\Oracle.DataAccess.dll" 
Function TestDBConnection($connectString)
{
  //Code for opening a connection to the database
} }

由于它是一个新会话,因此不起作用,并且它不知道 TestDBConnection 函数。

您知道如何解决此问题吗?

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)