2017-08-10 6 views
1

私はキーストアを管理するためにPowershellにいくつかのkeytoolラッパーを記述しようとしています。あなたは私が評価する変数にそれを保存したいと私は、標準ouptutにすべてをリダイレクトしています見ることができるようにJava keytool.exe powershell wrapperは標準エラーを抑制しません

$cmd = "& " + $keytoolexe + " -import " + $CAswitch + 
" -alias " + $alias + 
" -keystore " + $keystore + " -storepass " + $storepass + 
" -file "  + $file + 
" -noprompt *>&1" 
$result = Invoke-Expression -Command $cmd 

:私は直面しています 問題は、そのようなコマンドを実行しているPowerShellは、ですコマンドの結果。

keytool.exeが正常にメッセージを返すと、powershellは何とかそれをエラーとして読み取ります。

ブロックコード自体を実行しようとしましたが、エラーは発生しませんでした。 しかし、このコードを関数の中に入れた後、パラメータ-ErrorAction stopを指定して関数を呼び出すと、このエラーが発生します。

keytool.exe : Certificate was added to keystore 
At line:1 char:1 
+ & "C:\Program Files\Emulex\OCM for VMware\JRE\bin\keytool.exe" -impor ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (Certificate was added to keystore:String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 

したがって、何らかの理由でErrorAction Stopが標準的なouptutリダイレクトを消滅させるようです。

答えて

0

私はそれがどのように動作するか、私は完全には理解していないけど、「猿のテスト」の多くの後、私は今、私が探しています何を持っている:

$cmd = "& " + $keytoolexe + " -import " + $CAswitch + 
" -alias " + $alias + 
" -keystore " + $keystore + " -storepass " + $storepass + 
" -file "  + $file + 
" -noprompt *>&1" 
$dummy = Invoke-Expression -Command $cmd -ErrorVariable KeyToolStdOut -OutVariable KeyToolStdErr -ErrorAction Continue 

どういうわけか、それはにすべてをリダイレクトする、この組み合わせらしいです(*> & 1)、標準出力と標準エラーの取り込みに変数を使用します。

はい、私は目的のためにerrorvariableとして標準的なouptutを置きます、上のコードは、それだけで、私はエラーと標準出力に標準出力する必要があると信じて送信します。

私は、成功または失敗を判断するためにスクリプトでロジックを使用しています。 私はこれが誰かを助けてくれることを願っています。

関連する問題