0

バックグラウンドプロセスでinvoke-commandによって開始されたリモートジョブを強制終了する簡単な方法は何ですか?

リモート PS スクリプトをキックしてレガシー exe ファイルを実行し、そのプロセスを強制終了する方法が必要です。

最初に stop-job を使用するつもりでしたが、読んでいるように、ローカル プロセスでしか機能しません。

次に、Remove-job -force コマンドを使用するつもりでしたが、正しく理解できていれば、完了するまで実行中のプロセスを強制終了できません (ここでも、リモート ps スクリプトが別のプロセスを開始して exe ファイルを実行します)。

wmi terminate コマンドを使用してプロセスを強制終了できることを読んでいますが、リモート プロセスの PID を取得する方法がわかりません (他のユーザーからプロセスを強制終了できるため、名前は使用できません)。

私の目標を達成するための最良の方法は何ですか?

私のスクリプトは次のようになります。

invoke-command -computername server1,server2,server3..etc -script-block {my.exe} -asjob

loop to wait for all processes to complete and report progress

   check for CTRL-C press and kill all remote instances on {my.exe}
4

2 に答える 2

1

今朝、仕事から確認しましたが、これは呼び出しスクリプトから正常に機能します。

get-job | remove-job -force 

私はMSDNのドキュメントに混乱していました:

When you stop a background job, Windows PowerShell **completes** all tasks that are pending in that job queue and then ends the job
于 2011-08-22T14:23:16.493 に答える
0

この回答を確認してください。開始プロセス コマンドをスクリプト ブロックに追加して、pid を返すか、後で参照できるようにテキスト ファイルに保存できます。

PowerShell - 呼び出されたアプリケーションのプロセス ID を取得する

于 2011-08-22T06:34:48.463 に答える