代码之家  ›  专栏  ›  技术社区  ›  Charles Anderson

有没有一种温和的方法来停止使用WindowsPowerShell的进程?

  •  12
  • Charles Anderson  · 技术社区  · 15 年前

    我必须从PowerShell脚本中停止浏览器,这是通过管道将其传输到

    Stop-Process -Force
    

    然而,这是非常突然的。重新启动浏览器时,它会检测到它没有完全关闭,并尝试重新启动上一个会话。有什么办法可以让它优雅地关闭自己吗我们有两种方法……)

    3 回复  |  直到 15 年前
        1
  •  14
  •   Keith Hill    15 年前

    尝试以下操作以模拟用户关闭应用程序:

    (Get-Process -Id 10024).CloseMainWindow()
    
        2
  •  11
  •   Roman Kuzmin    15 年前

    基思·希尔已经提议使用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()
    }
    
        3
  •  2
  •   Vakhtang Tevdorashvili    9 年前

    您也可以这样做:

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