2017-12-31 21 views
2

exe ​​프로세스를 시작하는 powershell 스크립트가 있습니다. 컴퓨터가 유휴 상태 일 때이 PowerShell 스크립트를 실행하도록 예약 된 작업이 있으며 유휴 상태가 아닌 경우이 작업을 중지하도록 설정했습니다.powershell 스크립트에서 실행 된 자식 프로세스를 종료하는 작업 스케줄러를 얻는 방법

문제는 작업 일정이 시작된 exe 프로세스를 죽이지 않는다는 것인데, 나는 단지 powershell 프로세스를 죽이려고한다고 가정합니다.

내가 호출 표현과 과정을 시작하려고했습니다

이 작업 스케줄러에서 실행 있어요 때 powershell.exe를 의 서브 프로세스로 실행 된 EXE를 만들 수있는 방법을 찾을 수없는 것, start-proces, 나는 또한 out-null, wait-process 등의 파이프를 시도했다. ps1이 작업 스케줄러에서 시작될 때 아무 것도 작동하지 않는 것 같다.

이 방법이 있습니까?

감사

+0

'start-process'는 Job 객체를 사용하여 전체 프로세스 트리를 기다릴 수 있지만이 Job을'JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE'로 설정하지 않습니다. 따라서 PowerShell을 종료해도 작업의 프로세스에는 아무런 영향을 미치지 않습니다. – eryksun

+0

이것은 C#에서 수행하기도 쉽지 않습니다. https://stackoverflow.com/questions/3342941/kill-child-process-when-parent-process-is-killed –

답변

4

내가 프로세스가 terminated 그것은 어떤 알림을 수신하지 않으며, 당신은 어떤 정리를 할 수있는 기회를 얻을 수없는 경우 이후 문제에 대한 쉬운 해결책이 있다고 생각하지 않습니다.

그러나 당신은 당신의 첫번째 과정을 감시하고 수행 다른 감시 프로세스를 생성 할 수 있습니다에 대한 정리 :

#store pid of current PoSh 
$pid | out-file -filepath C:\Users\you\Desktop\test\currentposh.txt 
$child = Start-Process notepad -Passthru 
#store handle to child process 
$child | Export-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml') 

$break = 1 
do 
{ 
    Sleep 5 # run forever if not terminated 
} 
while ($break -eq 1) 

워치 독 스크립트 킬 :이 할 수있는 다른 무관 한 후

출시 스크립트를 기다립니다 실행 스크립트가 종료 된 경우 자식 :

이것은 다소 복잡하고 상황에 따라 단순화 될 수 있습니다. 어쨌든, 나는 당신이 그 아이디어를 얻은 것 같아요.

+0

고마워요. 이것은 의미가있다, 나는 그것을 한 번 줄 것이다. – fenderog

관련 문제