如果我使用powershell运行外部命令,如何获取它的pid?
我想获取它,以便以后可以正常退出(不仅仅是直接终止进程,而是更像是finally
块的意义)
答案 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