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