繁体   English   中英

在PowerShell中进程的状态

[英]status of the process in powershell

Windows中的进程可以处于六种状态中的任何一种状态,即运行,准备,阻塞,挂起,新建和退出。 如何在Windows中使用PowerShell知道给定进程(名称,ID)的状态。 在UNIX中,此信息存储在/ proc / $ processid / status文件中。 它在Windows中的位置或如何在PowerShell中获取此信息。

“退出”状态由“退出代码”属性(由GetExitCodeProcess()返回)表示。 在PS中,它由Get-ProcessHasExitedExitCode字段(别名ps )反映出来。

ps | where {$_.Id -eq <PID>} | select HasExited,ExitCode 

Windows中的“running / wait / suspended”是线程状态而不是进程(“suspend”是几个Wait子状态之一 )。 我没有找到任何关于通过PS的内置方式获取线程信息的信息,但我们可以调用相应的.NET功能

$process=[System.Diagnostics.Process]::GetProcessById(<PID>)
$threads=$process.Threads
$threads | select Id,ThreadState,WaitReason

你是对的,这是一个有趣的观点。 一种通过以下方式了解流程状态的方法:

$ProcessActive = Get-Process outlook -ErrorAction SilentlyContinue
if($ProcessActive -eq $null)
{
 Write-host "I am not running"
}
else
{
 Write-host "I am running"
}

如果outlook不是一个正在运行的进程,它将不会被列出但是-ErrorAction SilentlyContinue将继续并返回一个I am not running

如果它正在运行它将发送给你I am running

我不知道一个过程的其他状态......至少不知道如何dertermine

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM