PowerShell实现获取进程所有者
适用于PowerShell3.0或者和更高版本。
Get-Process能够获取当前运行的所有进程的列表,但是它不会返回进程的所有者信息,如果在PowerShell查询进程的所有者信息,我们需要调用WMI服务。下面给出一个例子。
filterGet-ProcessOwner { $id=$_.ID $info=(Get-WmiObject-ClassWin32_Process-Filter"Handle=$id").GetOwner() if($info.ReturnValue-eq2) { $owner='[AccessDenied]' } else { $owner='{0}\{1}'-f$info.Domain,$info.User } $_|Add-Member-MemberTypeNoteProperty-NameOwner-Value$owner-PassThru }
荔非苔注:其实之前已经发布过类似的文章,但是今天旧事重提,是因为在这篇中原文作者使用了过滤器,没有使用函数,值得借鉴。
当进程对象传递给Get-ProcessOwner后,它会在原有的对象上追加一个“Owner”属性,默认这个属性是隐藏的。你可以使用Selec-Object让它显示。
PS>Get-Process-Id$pid|Get-ProcessOwner|Select-Object-PropertyName,ID,Owner
Name IdOwner ---- ------- powershell_ise 10080TOBI2\Tobias