Get-Process 可以返回当前正在运行的进程的许多信息,但是它不能返回进程的所有者和当前用户登录的会话信息。幸好有一个内置的控制台命令tasklist可以提供这些信息。我们可以调用tasklist将进程信息输出为以逗号分割的文本数据,然后再使用ConvertFrom-Csv转换成对象数组,这样就可以过滤出我们需要的数据了。
PS D:\> tasklist /V /FO CSV | ConvertFrom-Csv | Select-Object -Property "映像名称","会话# ","会话名 ","用户名 " | Format-Table -AutoSize 映像名称 会话# 会话名 用户名 -------- -------- ------------ --------- System Idle Process 0 Services NT AUTHORITY\SYSTEM System 0 Services 暂缺 smss.exe 0 Services 暂缺 csrss.exe 0 Services 暂缺 wininit.exe 0 Services 暂缺 csrss.exe 1 Console 暂缺 winlogon.exe 1 Console 暂缺 services.exe 0 Services 暂缺
唯一不方便的是,这些属性的名称,被本地化了。也就是说属性的名称可能在不同的语言的机器上显示不同,例如中文机器上,会话名属性后面,竟然跟了这么多空格,最好能先把空格剃掉。
PS D:\> tasklist /V /FO CSV | foreach { $_.Replace(" ","") } | ConvertFrom-Csv | select "映像名称","PID","会话名","会话#","用户名","窗口标题"| ft -AutoSize WindowsLiveWriter.exe 5524 Console 1 mosser-PC\mosser PowerShell查找进程的所有者和会话-WindowsLiveWriter powershell.exe 6772 Console 1 mosser-PC\mosser WindowsPowerShell conhost.exe 5692 Console 1 mosser-PC\mosser CicMarshalWnd notepad.exe 6888 Console 1 mosser-PC\mosser 无标题-记事本 SogouCloud.exe 7384 Console 1 mosser-PC\mosser 暂缺 tasklist.exe 6060 Console 1 mosser-PC\mosser 暂缺 WmiPrvSE.exe 7196 Services 0 暂缺 暂缺
原文链接:http://powershell.com/cs/blogs/tips/archive/2012/10/04/finding-process-owners-and-sessions.aspx
本文链接: https://www.pstips.net/powershell-finding-process-owners-and-sessions.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
我想获取 人物列表中占用cpu最高的进程名称。请教一下,怎么获取。
我想获取 进程列表中占用cpu最高的进程名称。请教一下,怎么获取。