windows - dræb remote job initieret af invoke-command

Indlæg af Hanne Mølgaard Plasc

Problem



Hvad er den nemme måde at dræbe fjerntliggende job påbegyndt af påkaldskommando med baggrundsprocesser?


Jeg sparker remote PS script til at køre legacy exe fil og har brug for en måde at dræbe den proces.


Jeg skulle bruge stop-job først, men som jeg læser det virker kun for lokale processer.


Så ville jeg bruge Fjern-job-force kommandoen, men hvis jeg forstod rigtigt, kan det ikke dræbe løbeprocessen, indtil det er færdigt (igen vil min remote ps script starte en anden proces til at køre exe-fil).


Jeg læser jeg kan dræbe en proces ved hjælp af wmi terminate kommando, men jeg ved ikke, hvordan man får PID af fjern proces (jeg kan ikke bruge navn, fordi jeg kan dræbe processer fra andre brugere)


Hvad er den bedste måde at nå mit mål på?


mit script ser sådan ud:


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}

Bedste reference


Tjek dette svar, du kan tilføje startprocessen kommandoen til din script blok og returnere pid eller gem den til en tekstfil for at blive referencer senere.


PowerShell - få proces-id af den kaldte applikation

Andre referencer 1


ok tjekket i morges fra arbejde, og det fungerer fint fra et kaldende script:


get-job | remove-job -force 


Jeg blev forvirret af MSDN doc, der siger:


When you stop a background job, Windows PowerShell **completes** all tasks that are pending in that job queue and then ends the job