2010-04-27 25 views

Respuesta

10

probar este para simular el usuario cierra la aplicación:

(Get-Process -Id 10024).CloseMainWindow() 
9

Keith Hill ya ha propuesto el uso de CloseMainWindow(). Pero solo es una invitación a cerrar, aún podría necesitarse alguna interacción del usuario, por ejemplo, una aplicación puede mostrar algunos diálogos para guardar algo, etc. Si un script de llamada realmente espera que salga un proceso, utilizo este patrón:

# close the window and wait for exit 
$_ = Get-Process -Id 12345 
[void]$_.CloseMainWindow() 
if (!$_.HasExited) { 
    Write-Host "Waiting for exit of Pid=$($_.Id)..." 
    $_.WaitForExit() 
} 
+0

Nice build! Gracias. –

2

también puede hacer esto:

Get-Process <name> | where {$_.MainWindowHandle -ne [System.IntPtr]::Zero} | foreach {$_.CloseMainWindow()} 

esto cerrará todos los procesos que coinciden con el patrón y tienen una ventana unida a ellos. Por ejemplo, el proceso de Chrome puede usar subprocesos que no tienen una ventana. Estos subprocesos serán ignorados.

+0

FYI - este comando funciona siempre que exista un proceso con el nombre dado, de lo contrario se produce un error. El error puede o no ser deseado dependiendo de su caso de uso. – HairOfTheDog

Cuestiones relacionadas