убить дочерний процесс в windows с помощью powershell - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть скрипт ниже, но, похоже, он не уничтожит дочерние процессы.Как убить дочерние процессы?

Когда он запускается, он выглядит хорошо, но затем остаются диалоговые окна, а затем, когда я проверяю диспетчер задач, исходные процессы все еще работают.Что заставляет меня задуматься, правильно ли работает скрипт.Другая странная часть этого заключается в том, что, естественно, я вижу, что эти процессы (программы .exe) работают на панели задач, но после запуска скрипта они выглядят так, как будто они не запущены.Но опять же, я проверяю диспетчер задач и, конечно же, они все еще работают.

$ErrorActionPreference = "SilentlyContinue"
Stop-Transcript | Out-Null
$ErrorActionPreference = "Continue"
Start-Transcript -Path C:\Scripts\Errors\errors.log -Append
$process = Get-Process -Name "IVR1","IVR2","IVR3"
$IVR1path = "C:\IVR1"
$IVR2path = "C:\IVR2"
$IVR3path = "C:\IVR3"
if ($process) {
    $Process | Stop-Process -Force
    Start-Sleep -s 5
    cd $IVR1path
    Start-Process ".\IVR1.exe"
    cd IVR2path
    Start-Process ".\IVR2.exe"
    cd IVR3path
    Start-Process ".\IVR3.exe"
    cd ..
    cd ..
    $From = "IVR1@example.com.au"
    $To = "myemail@example.com.au"
    $cc = "myemail@example.com.au"
    $Subject = "**TEST** - IVR1 has been recovered"
    $Body = "The IVR has been successfully recovered"
    $SMTPServer = "mail.example.com.au"
    Send-MailMessage -From $From -to $To -cc $cc -Subject $Subject -Body $Body -SmtpServer $SMTPServer
    Stop-Transcript
}

Кто-нибудь есть какие-либо предложения?Может ли это быть из-за того, что дочерние процессы не были уничтожены или исходный процесс зависал?

1 Ответ

0 голосов
/ 15 февраля 2019

Я думаю, что вы неправильно использовали инструменты, необходимые для достижения цели.Используйте https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-process?view=powershell-4.0 и функции, перечисленные в конце страницы (все о жизненном цикле процесса).Примечание: добавьте больше подробностей (значений переменных записи-вывода) к тому, что делает ваш скрипт, чтобы вы знали, что происходит (или использовали отладчик, потому что я не уверен, что большая часть вставленного вами кода даже выполнена).

...