我正试图从powershell
调用wlst / jython / python 在正确的会话中没有设置使用setWLSEnv.cmd设置classpath?所以我试图将-cp设置为参数& C:\bea\tpc\weblogic1033\server\bin\setWLSEnv.cmd;
$cp='C:\bea\tpc\WEBLOG~1\server\lib\weblogic.jar'
$wlst='weblogic.WLST'
$script='C:\domains\tpc\Domain\bin\status.py'
$java="C:\PROGRA~1\Java\JROCKI~1.0\bin\java"
& "$java $cp $wlst $script"
#or
. "`"$java`" -cp `"$cp`" $wlst `"$script`""
#or
& "`"$java`" -cp `"$cp`" $wlst `"$script`""
我试图以各种方式引用命令字符串而没有成功
术语'“C:\ PROGRA~1 \ Java \ JROCKI~1.0 \ bin \ java”-cp“C:\ bea \ tpc \ WEBLOG~1 \ server \ lib \ weblogic.jar”weblogic.WLST“ C:\域\ TPC \ SasTT
pcDomain \ bin \ status.py“'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。请检查拼写
名称,或者如果包含路径,请验证路径是否正确,然后重试。
在C:_WORK_ \ SAS \ statusAll.ps1:15 char:2
+。 <<<< “"$java
” - cc "$cp
“$ wlst "$script
”“
+ CategoryInfo:ObjectNotFound:(“C:\ PROGRA~1 \ Ja ... \ bin \ status.py”:String)[],CommandNotFoundException
+ FullyQualifiedErrorId:CommandNotFoundException
答案 0 :(得分:1)
当您使用调用运算符&
时,下一个标记需要是命令的名称而不是其他任何标记。所以不要这样:
& "$java $cp $wlst $script"
试试这个:
& $java $cp $wlst $script
有时候获取本地exes的参数可能会变得很丑陋。如果您的任何参数来自用户输入,通常可以工作但不安全的技术是:
Invoke-Expression "$java $cp $wlst $script"
答案 1 :(得分:0)
除了将命令格式化为字符串的问题之外,setWLSEnv.cmd
是Windows命令提示符的脚本。 PowerShell无法执行此文件;它不知道如何解释它,就像记事本不知道如何解释docx文件一样。 Windows将.cmd文件与命令提示符关联,因此您的第一行等同于
& cmd.exe /c C:\bea\tpc\weblogic1033\server\bin\setWLSEnv.cmd
(请注意,由于您在同一行上没有任何其他命令,因此不需要分号。)
这将使用cmd.exe创建一个新进程。这个新进程执行批处理文件,设置您期望的环境变量,然后退出进程,放弃环境更改。
如果在执行程序之前需要setWLSEnv.cmd
来设置环境变量,则应编写一个调用它而不是PowerShell脚本的批处理文件。否则,您将需要查找或编写PowerShell等效项来设置您的环境。