Powershell使用sqlplus执行sql查询

时间:2015-02-17 12:08:23

标签: oracle powershell

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

使用EOF的

Perl代码:

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

我的Powershell代码:

    $command="export ORACLE_SID=DB10G
    sqlplus -S santhosh/password@DB10G << 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。

谢谢, Santhosh


是的,我能够执行其他shell命令。

例如:

$result = Invoke-SSHCommand -Index 0 -Command "whoami"
write-Output $result.Output

我的输出:

oracle

如果我复制sqlplus命令并将其粘贴到shell提示符中,我就会得到输出。

与究竟发生的事情相当混淆。


当我使用EOF执行其他命令(如“cat”)时,它执行正常。

$cmd="cat > hello.txt << EOF
This is 1st line
This is 2nd line"
$result = Invoke-SSHCommand -Index 0 -Command $cmd
write-Output $result

该文件是在我的linux机器中创建的。

[oracle@oracleDB ~]$ cat hello.txt
This is 1st line
This is 2nd line

如果我将结尾“EOF”添加到上面的命令中,我的shell提示符会以某种方式将其视为cat命令的另一个输入,并将该行添加到文件中。

$cmd="cat > hello.txt << EOF
This is 1st line
This is 2nd line
EOF"
$result = Invoke-SSHCommand -Index 0 -Command $cmd
write-Output $result

结果是这样的:

[oracle@oracleDB ~]$ cat hello.txt
This is 1st line
This is 2nd line
EOF

任何人都能解释一下这里发生了什么吗?。

谢谢, Santhosh

0 个答案:

没有答案