Powershell中一个线程的详细信息

问题描述 投票:0回答:4

如何通过 powershell 获取进程中运行的所有线程的CPU 消耗,格式类似于此

enter image description here

运行时找不到任何处理器信息

gwmi win32_thread|select -First 1
。而
Start Address
是数字!?!

powershell query-optimization windbg remote-server powershell-4.0
4个回答
2
投票

阿彦; 你看过 Codeplex 上的 PowerDbg 了吗?

http://powerdbg.codeplex.com/


2
投票

显示与 Process Explorer 相同的详细信息

您提供的屏幕截图似乎是 Process Explorer 的屏幕截图,而不是任务管理器的屏幕截图。这使事情变得更加复杂,因为(如果我没记错的话)Process Explorer 使用内核驱动程序来获取有关系统的详细信息,以便比 Windows 更精确地计算 CPU 时间。 我手头没有这本书,但这应该在Windows Sysinternals Administrator's Reference中描述。

将起始地址转换为 DLL 和方法

起始地址,顾名思义,就是一个地址。通常它会以十六进制格式显示,但实际上它只是一个数字,因此在您的情况下它可能是数字。转换为十六进制没问题。

如果你想把数字变成有用的东西,比如DLL名称和方法名称,你需要使用符号。在您的屏幕截图中看到:Process Explorer 还需要下载符号,否则偏移量是从 DLL 开始计算的(如

van.dll+1c904
)。

为了处理符号,Process Explorer 使用了一个名为

dbghelp.dll
的Microsoft DLL。您已经在
Options/Configure symbols...
中配置了它。如果愿意,您可以使用相同的 DLL,但我会说这是您停止使用 Powershell 的地方,因为
dbghelp.dll
是本机 DLL,不能被 .NET 使用。您甚至不能在 Visual Studio 中创建 .NET 互操作程序集,因为它不是 COM DLL。

此外,Process Explorer 对起始地址的显示值应用了另一个魔法:通常起始地址总是相同的:一些 Microsoft 代码创建一个线程对象,然后调用应用程序特定代码。 Process Explorer 遍历堆栈跟踪并显示调用堆栈上的第一个非 Microsoft 框架。我不确定 WMI rturned 的地址是否考虑同样的事情。

如果你想尝试

dbghelp.dll
,从地址转换为DLL的方法应该是IDebugSymbols::GetNameByOffset().

还要注意,从地址到方法的转换需要在远程机器上完成,因为只有远程机器才会知道加载了哪个确切版本的DLL。然后,还要考虑远程计算机需要访问 Internet 才能从 Microsoft 服务器下载符号。

远程执行

在评论中你提到你想在远程计算机上执行命令。 Process Explorer 不支持远程机器。虽然我不确定原因,但我的猜测是它只能通过 WMI 访问远程 PC - 因此会遇到与您相同的限制。

但是,有一些 Process Explorer 的替代方案,在 Process Explorer 论坛中进行了讨论。它们似乎也受到 WMI 限制的影响,但您可以尝试一下。 除此之外,您还可以使用 SysInternals PsExec.

在远程机器上执行程序

总体结论

我想预期的解决方案太复杂了,无法在 StackOverflow 上找到答案,尤其是当工具集仅限于 Powershell 时。它至少需要 C++ 来集成

dbghelp.dll
以及
PSExec
来访问远程机器。


1
投票

不确定这是否可以通过开箱即用的 powershell 完成,但由于您提供赏金,我建议您查看 Process Hacker 的源代码。

http://processhacker.sourceforge.net/

IIRC process hacker用C语言编写,完全开源

以编程方式清除 Windows 7 待机内存


0
投票

PowerShell 7.3.3 运行良好

(Get-Process -ProcessName taskmgr).Threads|Sort-Object TotalProcessorTime -Descending| 
    Format-Table -Property Id,PriorityLevel,ThreadState,WaitReason,StartTime,TotalProcessorTime

输出

© www.soinside.com 2019 - 2024. All rights reserved.