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