【发布时间】:2015-05-12 01:04:46
【问题描述】:
New-SshSession -ComputerName cagent01
$A= Invoke-SshCommand -InvokeOnAll -Quiet -Command '~/.bash_profile'
$B= Invoke-SshCommand -InvokeOnAll -Quiet -Command '~/.bashrc'
$Result = Invoke-SshCommand -InvokeOnAll -Quiet -Command './start'
$Ora = Invoke-SshCommand -InvokeOnAll -Quiet -Command 'echo $ORACLE_HOME'
write-host "Oracle home is $Ora"
Remove-SshSession -RemoveAll
我使用 PowerShell v3。这个脚本没有采购我的 .profile。 我没有看到 $Ora 打印任何价值。
当我手动登录服务器执行 echo $PATH 时,它包含 ORACLE 路径
回显 $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/data/app/oracle/product/11.2.0/dbhome_1/bin:/home/HEALTHLANGUAGE/scmbuild /bin:/home/db2inst1/sqllib/bin:/home/db2inst1/sqllib/adm:/home/db2inst1/sqllib/misc
.bash_profile 确实导出了 PATH 变量。 导出路径
当我在这个代理上运行竹计划时,它说 ORACLE_HOME 没有设置。手动登录到服务器源路径正确,但我想使用脚本来做。
有人可以帮我解决吗?还是不能使用适用于 Linux 服务器的 PowerShell 来做到这一点?
【问题讨论】:
-
你确定这些命令在同一个远程shell会话中执行吗?我不会默认情况下假设。如果在一个命令中将它们全部串在一起,你会得到你期望的输出吗?
. ~/.bash_profile; . ~/.bashrc; echo "$ORACLE_HOME"? -
试过这个但没有用。 $A= Invoke-SshCommand -InvokeOnAll -Quiet -Command '。 ~/.bash_profile; . ~/.bashrc; echo "$ORACLE_HOME" '
-
你有没有从中得到任何输出?
$ORACLE_HOME是否设置在其中一个文件中? -
我试过这个 $Z = Invoke-SshCommand -InvokeOnAll -Quiet -Command 'echo $PATH' 并得到所需的输出“路径是 /usr/kerberos/bin:/usr/local/bin: /bin:/usr/bin" 这只是 ORACLE_HOME 没有得到来源
-
该路径几乎肯定是由系统 shell 初始化文件设置的,而不是您的用户 shell 初始化文件。但是手动加载用户 shell 初始化文件(就像我之前的命令一样)应该可以正常工作。
标签: powershell .profile