Get-Process 能夠獲取當前運行的所有進程的列表,但是它不會返回進程的所有者信息,如果在PowerShell查詢進程的所有者信息,我們需要調用WMI服務。下面給出一個例子。
當進程對象傳遞給Get-ProcessOwner后,它會在原有的對象上追加一個“Owner”屬性,默認這個屬性是隱藏的。你可以使用Selec-Object讓它顯示。
PS> Get-Process -Id $pid | Get-ProcessOwner | Select-Object -Property Name, ID, Owner
Name Id Owner
---- -- -----
powershell_ise 10080 TOBI2\Tobias
PS> Get-Process | Where-Object MainWindowTitle | Get-ProcessOwner | Select-Object -Property Name, ID, Owner
Name Id Owner
---- -- -----
chrome 13028 TOBI2\Tobias
devenv 13724 TOBI2\Tobias
Energy Manager 6120 TOBI2\Tobias
ILSpy 14928 TOBI2\Tobias
(...)
注意要查看所有進程的信息,你需要讓PowerShell在管理員身份下運行。否則你只能看到所有者是你自己的進程,其它進程的所有者顯示:“Access Denied”。而且這樣的信息相對來說也沒有什么意義。