我正在尝试从Powershell调用wlst / jython / python

在正确的会话中未设置setWLSEnv.cmd设置类路径?所以我试图将-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” -cp "$cp“ $ wlst "$script”“
+ CategoryInfo:ObjectNotFound :(“ C:\ PROGRA〜1 \ Ja ... \ bin \ status.py”:字符串)[],CommandNotFoundException
+ FullyQualifiedErrorId:CommandNotFoundException

最佳答案

当您使用呼叫操作员&时,下一个标记必须是命令的名称,而不能是其他任何名称。所以代替这个:

& "$java $cp $wlst $script"


尝试这个:

& $java $cp $wlst $script


有时,获取本机exe的参数可能会很丑陋。如果您的任何参数来自用户输入,通常可以使用但不安全的技术是:

Invoke-Expression "$java $cp $wlst $script"

10-08 13:56