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`""

コマンド文字列をさまざまな方法で引用しようとしましたが、成功しませんでした

用語'"C:\ PROGRA〜1 \ Java \ JROCKI〜1.0 \ bin \ java" -cp "C:\ bea \ tpc \ WEBLOG〜1 \ server \ lib \ weblogic.jar" weblogic.WLST "C:\ domain \ tpc \ SasTT pcDomain \ bin \ status.py "'は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認して、再試行してください。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

4

2 に答える 2

1

call operator を使用する場合&、次のトークンはコマンドの名前である必要があり、それ以外は何もありません。したがって、これの代わりに:

& "$java $cp $wlst $script"

これを試して:

& $java $cp $wlst $script

ネイティブexeへの引数の取得が見苦しくなることがあります。通常は機能しますが、引数のいずれかがユーザー入力からのものである場合は安全ではありません。

Invoke-Expression "$java $cp $wlst $script"
于 2013-01-14T16:53:27.243 に答える
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を見つけるか作成する必要があります。

于 2013-01-15T00:23:44.630 に答える