代码之家  ›  专栏  ›  技术社区  ›  leeand00

如何获取从PowerShell启动的进程的PID?

  •  1
  • leeand00  · 技术社区  · 6 年前

    如果使用PowerShell运行外部命令,如何获取其PID?

    我想获得它是为了以后优雅地退出它(不仅仅是直接杀死这个过程,而是更像是 finally 方块)

    2 回复  |  直到 6 年前
        1
  •  1
  •   Russell    6 年前

    使用System.Diagnostics.Process对象,可以启动进程,并返回一个进程对象,其中包括新创建的进程PID。

    例如:

    $Process = [Diagnostics.Process]::Start("nssm.exe")   
    Write-Host $Process.Id
    
        2
  •  1
  •   gvee    6 年前

    Get-Process

    Write-Output (Get-Process -Name "Sonos").Id
    

    这将使您得到PID-但是根据您描述的内容,它更容易输出 获取过程 转换为变量并处理对象

    try {
        $process = Start-Process -FilePath "C:\Program Files (x86)\Sonos\Sonos.exe"
        Write-Output $process.Id
    }
    catch {
        throw
    }
    finally {
        if ($process) {
            Stop-Process -InputObject $process
            # Alternative: $process | Stop-Process
        }
    }