убить удаленную работу, инициированную invoke-командой - PullRequest
0 голосов
/ 21 августа 2011

Каков простой способ уничтожить удаленное задание, инициированное командой invoke с фоновыми процессами?

Я запускаю удаленный скрипт 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}

Ответы [ 2 ]

0 голосов
/ 22 августа 2011

хорошо, проверено сегодня утром с работы, и это прекрасно работает из вызывающего скрипта:

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
0 голосов
/ 22 августа 2011

Ознакомьтесь с этим ответом, вы можете добавить команду запуска процесса в свой блок скриптов и вернуть pid или сохранить его в текстовом файле для последующего использования.

PowerShell - получить идентификатор процесса длявызываемое приложение

...