我必须从PowerShell脚本中停止浏览器,我将其用于管理
Stop-Process -Force
然而,这是非常突然的。重新启动浏览器时,它会检测到它没有干净地关闭,并尝试重新启动上一个会话。有什么方法可以告诉它优雅地关闭自己? (“我们有两种方法可以做到这一点......”)
答案 0 :(得分:10)
尝试此操作来模拟关闭应用的用户:
(Get-Process -Id 10024).CloseMainWindow()
答案 1 :(得分:10)
Keith Hill已经提议使用CloseMainWindow()。但它只是一个关闭的邀请,仍然可能需要一些用户交互,例如一个应用程序可能会显示一些对话框来保存某些东西等。如果一个调用脚本真的希望退出一个进程,我使用这个模式:
# close the window and wait for exit
$_ = Get-Process -Id 12345
[void]$_.CloseMainWindow()
if (!$_.HasExited) {
Write-Host "Waiting for exit of Pid=$($_.Id)..."
$_.WaitForExit()
}
答案 2 :(得分:2)
你也可以这样做:
Get-Process <name> | where {$_.MainWindowHandle -ne [System.IntPtr]::Zero} | foreach {$_.CloseMainWindow()}
这将关闭与模式匹配的所有进程并附加一个窗口。例如,Chrome进程可能会使用没有窗口的子进程。这些子流程将被忽略。