如何获取从 powershell 启动的进程的 pid?
How does one obtain the pid of a process started from powershell?
如果我使用 powershell 运行 一个外部命令,我如何获取它的 pid?
我想获得它是为了以后可以优雅地退出它(不仅仅是直接终止进程,而是在 finally
块的意义上这样做)
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
}
}
使用System.Diagnostics.Process对象,可以启动一个进程,return一个Process对象,其中包括新创建的进程PID。
例如:
$Process = [Diagnostics.Process]::Start("nssm.exe")
Write-Host $Process.Id
如果我使用 powershell 运行 一个外部命令,我如何获取它的 pid?
我想获得它是为了以后可以优雅地退出它(不仅仅是直接终止进程,而是在 finally
块的意义上这样做)
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
}
}
使用System.Diagnostics.Process对象,可以启动一个进程,return一个Process对象,其中包括新创建的进程PID。
例如:
$Process = [Diagnostics.Process]::Start("nssm.exe")
Write-Host $Process.Id