如何获得从Powershell启动的进程的pid?

时间:2018-10-22 05:46:30

标签: powershell pid

如果我使用powershell运行外部命令,如何获取它的pid?

我想获取它,以便以后可以正常退出(不仅仅是直接终止进程,而是更像是finally块的意义)

2 个答案:

答案 0 :(得分:1)

Get-Process

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

这将为您提供PID-但是,根据您的描述,将Get-Process的输出输出到变量并改为处理对象会更容易

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
    }
}

答案 1 :(得分:1)

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

例如:

$Process = [Diagnostics.Process]::Start("nssm.exe")   
Write-Host $Process.Id