如何解决在一个会话中以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 举报,一经查实,本站将立刻删除。