Как получить pid процесса, запущенного из powershell? - PullRequest
0 голосов
/ 22 октября 2018

Если я использую powershell для запуска внешней команды, как мне получить ее pid?

Я хотел бы получить ее с целью изящного выхода из нее позже (не только для непосредственного уничтожения процесса, но искорее делать это в большем смысле finally блока)

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Используя объект System.Diagnostics.Process, вы можете запустить процесс и вернуть объект Process, который включает недавно созданный PID процесса.

Например:

$Process = [Diagnostics.Process]::Start("nssm.exe")   
Write-Host $Process.Id
0 голосов
/ 22 октября 2018

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