Utilizzando PowerShell 2.0 in un desktop di Windows 7Come aspettare e uccidere un processo di timeout in PowerShell
Voglio creare un processo per eseguire un comando di formica, e quindi attendere per quel processo di finire in pochi minuti. Se il timeout e il processo sono ancora in esecuzione, voglio ucciderlo.
ho scritto un po 'di codice come di seguito:
$p = Start-Process "cmd.exe" '/c ant execute' -PassThru -RedirectStandardOutput $log_file_path
Wait-Process -id $p.ID -timeout 100
if(!$p.hasExited) {
echo "kill the process"
$p.Kill()
#Stop-Process $p.ID
}
Start-Sleep -s 30
# continue to do other things
Anche se il processo non ha ottenuto ucciso, è ancora in corso, anche dopo la dichiarazione di inizio-sonno eseguito.
Ho anche provato con il comando Stop-Process, in quanto la linea commentata indica, non c'è fortuna, il processo ancora in esecuzione.
Forse mi sono perso qualcosa di importante, per favore dacci un indizio.
EDIT:
Si scopre ci sono alcuni processi figlio ancora in esecuzione nella finestra cmd, uccidere solo il processo cmd non è sufficiente.
ho finalmente ottenere il lavoro fatto con il seguente codice:
if(!$p.hasExited) {
echo "kill the process"
taskkill /T /F /PID $p.ID
#$p.Kill()
#Stop-Process $p.ID
}