Powershell 使用 SQLPLUS 执行查询

Powershell 使用 SQLPLUS 执行查询

我有一台安装了 Oracle 10G 的 RHEL 服务器。我需要编写一个 powershell 脚本来查询我的数据库并获取输出。我已经导入了 Posh-SSH 模块,能够连接到我的 RHEL 服务器并使用执行命令,Invoke-SSHCommand但是,我需要帮助使用我的执行 sqlplus 命令Invoke-SSHCommand。通常,我们可以使用 EOF 在 perl 中实现这一点,但我找不到任何使用 powershell 完成此操作的方法。

使用 EOF 的 Perl 代码:

$command="export ORACLE_SID=database
sqlplus -S user/password<< EOF
set feedback off
select username from dba_users;
EOF"

我的 Powershell 代码:

$command="export ORACLE_SID=database
sqlplus -S user/password<< EOF
set feedback off
select username from dba_users;
EOF"

$result = Invoke-SSHCommand -Index 0 -Command $command
Write-Output $result

我的 Powershell 输出:

Host       : XX.XX.XXX.XXX
Output     : 
ExitStatus : 127

我猜想,Powershell 可以理解 EOF 字符。

有人能帮我把这个转换成 powershell 吗?我试过很多方法,但都徒劳无功。每次执行此代码时,我都会得到退出代码:127。

答案1

您在 Linux 上使用的“EOF”字符串不是字符。您使用的是“此处文档”。EOF 只是一个字符串,用于让 perl 知道您的此处文档在何处结束。我总是使用一些不太可能在此处文档中找到的东西,例如 fInI。

Powershell。是的。对于我们这些 *nix 用户来说简直就是噩梦。

答案2

我对 Linux 命令不太了解。你可以尝试

$UserName = "username"
$Password = "password"
$tnsalias = "tnsalias"
$SqlQuery =
@'
set feedback off
select username from dba_users;
exit
'@

Invoke-SSHCommand -Command "$SqlQuery |
 sqlplus $username/$password@$tnsalias"

相关内容