Windows 任务管理器的“进程”选项卡显示了几列信息,其中之一是拥有该进程的用户的用户名。
使用命令 WMIC 进程(来自管理员启动的 cmd.exe)为我提供了相同类型的信息,但我找不到任何用户名列。如何找出哪个用户使用 WMIC 启动了该过程?
问问题
9243 次
2 回答
5
可以在 win32_process 类实例上使用 GetOwner 方法检索所有者。我建议为此使用 PowerShell,它非常简单:
Get-WmiObject -Class Win32_Process |
Select-Object Name, @{
Name = 'Owner'
Expression = {
$_.GetOwner().User
}
}
如果您必须使用 wmic,则可以通过混合以下结果来破解:
wmic process get Name
...call GetOwner
例如:
@echo off
echo Domain\User,Machine,ProcessName,ProcessID,WorkingSetSize
(for /f "skip=2 tokens=2 delims=, eol= " %%P in ('wmic process get ProcessId /format:csv') do @call :AddOwner %%P) 2> nul
goto :EOF
:AddOwner
SET Process=%1
(for /f "skip=5 tokens=1,2 delims==; " %%O in ('wmic process WHERE ProcessID^=%Process% Call GetOwner') do @call :BuildOwner %%O %%P) > nul
for /f "skip=1 tokens=* eol= " %%L in ('wmic process WHERE ProcessID^=%Process% GET Name^, ProcessID^, WorkingSetSize /format:csv') do @SET INFO=%%L
echo %DOMAIN%\%USER%,%INFO%
goto :EOF
:BuildOwner
SET PARAM=%1
SET VALUE=%~2
IF [%PARAM%]==[Domain] SET DOMAIN=%VALUE%
IF [%PARAM%]==[User] SET USER=%VALUE%
goto :EOF
于 2013-02-02T14:04:01.613 回答
4
要获取所有taskeng.exe进程(单个任务的 Windows 任务计划程序进程)的所有者,请从“管理员”命令提示符窗口运行:
wmic process where "name='taskeng.exe'" call GetOwner
于 2015-02-05T04:14:26.263 回答