0

私が取り組んでいるpowershell GUIがあります。psexec を使用して複数の古い Java インストールを $pc 引数でアンインストールするバッチ ファイルを呼び出します。呼び出されると、GUI がロックアップしますが、ISE で実行されていることがわかります。バッチ ファイルの出力を GUI の複数行のテキスト ボックスに転送して、まだ処理中であることを確認できる方法はありますか?

TOM: まだ GUI に出力していません。それが私の質問です。それを呼び出すスクリプトの部分は次のとおりです。

if ($unjava=1){
   cmd /c "d:\tool\scripts\fixit\WAITjremover.bat $pc"
}

スクリプトがこの時点に達した後、Powershell ISE の出力ウィンドウでスクリプトが終了するのを確認するまで、GUI ウィンドウ、つまり Frozen を移動することさえできません。

4

1 に答える 1

0

UI がフリーズする理由は、UI と同じスレッドで上記の行を実行しているためだと推測します。CPU サイクルを取得していないため、UI は再描画できません。スレッドのすべてのサイクルは cmd 呼び出しに送られます。互いに干渉しないように、バックグラウンド実行を描画から分割する必要があります。

ジョブ内でコマンドを実行してみてください -

$j = start-job { param($unjava,$pc); if ($unjava=1) { cmd /c "d:\tool\scripts\fixit\WAITjremover.bat $pc" } } -argumentlist $unjava,$pc
wait-job $j

私はこれについて肯定的ではありません.ジョブが完了するのを待っている間、待機ジョブがUIのすべての実行を停止する可能性があります.その場合、これはすべて無駄です.

于 2012-02-07T17:50:56.400 に答える