首页 文章

使用来自powershell的参数运行java.exe

提问于
浏览
0

我试图从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 回答

  • 0

    当您使用调用操作符 & 时,下一个标记需要是命令的名称而不是其他任何标记 . 所以不是这样的:

    & "$java $cp $wlst $script"
    

    试试这个:

    & $java $cp $wlst $script
    

    有时候获得本地exes的参数可能会变得丑陋 . 如果您的任何参数来自用户输入,通常可以工作但不安全的技术是:

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

    除了将命令格式化为字符串的问题之外, setWLSEnv.cmd 是Windows命令提示符的脚本 . PowerShell无法执行此文件;它不知道如何解释它,就像记事本不知道如何解释docx文件一样 . Windows将.cmd文件与命令提示符关联,因此您的第一行等效于

    & cmd.exe /c C:\bea\tpc\weblogic1033\server\bin\setWLSEnv.cmd
    

    (请注意,分号是不必要的,因为您在同一行上没有任何其他命令 . )

    这将使用cmd.exe创建一个新进程 . 此新进程执行批处理文件,设置您期望的环境变量,然后退出该进程,放弃环境更改 .

    如果在执行程序之前需要 setWLSEnv.cmd 来设置环境变量,则应编写一个调用它而不是PowerShell脚本的批处理文件 . 否则,您将需要查找或编写PowerShell等效项来设置您的环境 .

相关问题