获取 PID 的用户名 (ProcessId)
Get username for PID (ProcessId)
我有一个 PID,我想检查它的用户名。我知道我们可以使用 GetOwner()
,但它是 Get-WmiObject Win32_Process
的有效方法。我正在使用 Get-WmiObject -Class Win32_PerfRawData_PerfProc_Process
,其中无法获取用户名(根据我在线搜索)。所以,我认为单独检查PID是解决这个问题的唯一方法。
你能告诉我如何获取 PID 的用户名或在 Win32_PerfRawData_PerfProc_Process
中获取用户名吗?
正如这篇 technet 文章中所述:Technet 您可以使用下面的代码。
在最后一行中,您可以在 get-process 命令之后放置您想要的进程。
例如Get-Process outlook | select processname,Id,@{l="Owner";e={$owners[$_.id.tostring()]}}
$owners = @{}
gwmi win32_process |% {$owners[$_.handle] = $_.getowner().user}
Get-Process | select processname,Id,@{l="Owner";e={$owners[$_.id.tostring()]}}
所需时间取决于当前有多少服务运行。
您的输出将类似于:
ProcessName Id Owner
----------- -- -----
OUTLOOK 13128 UserName
希望对您有所帮助。
亲切的问候。
我有一个 PID,我想检查它的用户名。我知道我们可以使用 GetOwner()
,但它是 Get-WmiObject Win32_Process
的有效方法。我正在使用 Get-WmiObject -Class Win32_PerfRawData_PerfProc_Process
,其中无法获取用户名(根据我在线搜索)。所以,我认为单独检查PID是解决这个问题的唯一方法。
你能告诉我如何获取 PID 的用户名或在 Win32_PerfRawData_PerfProc_Process
中获取用户名吗?
正如这篇 technet 文章中所述:Technet 您可以使用下面的代码。
在最后一行中,您可以在 get-process 命令之后放置您想要的进程。
例如Get-Process outlook | select processname,Id,@{l="Owner";e={$owners[$_.id.tostring()]}}
$owners = @{}
gwmi win32_process |% {$owners[$_.handle] = $_.getowner().user}
Get-Process | select processname,Id,@{l="Owner";e={$owners[$_.id.tostring()]}}
所需时间取决于当前有多少服务运行。 您的输出将类似于:
ProcessName Id Owner
----------- -- -----
OUTLOOK 13128 UserName
希望对您有所帮助。 亲切的问候。