wmic挂在远程服务器上?

根据我以前的问题提供的信息,我正在努力学习wmic。

我正在试图查看哪些进程正在使用远程服务器上的大部分资源。 我设法提出的是接近这篇文章的底部。 它在我的本地机器上工作得很好,但是当我将psexec放入服务器(Windows 2003或2008)并尝试运行此命令时,几乎每次都挂起。 我甚至不能按Ctrl + C让它停止。 我使用RDP(使用不同的用户名)进入这个命令挂起的机器之一。 从psexec发送命令的用户名显示在任务pipe理器cmd和wmic中列出的两个项目。 他们在发送命令几个小时后仍然保留在任务pipe理器中。 当我结束他们,它释放我的本地机器上的控制台。

我试过查找这可能挂的原因,我找不到任何东西。 我还问过我的一个系统pipe理员,但是这些人总是忙于帮助一个低级别的NOC家伙(合法的,但他们确实非常忙)。 任何想法可能会出错?

wmic path win32_perfformatteddata_perfproc_process where (PercentProcessorTime != 0) get Name, PercentProcessorTime, IDProcess 

我强烈build议远离WMIC.EXE,并使用PowerShell。 PowerShell使您可以使用RPC访问远程服务器的WMI接口,从而不需要PsExec。 虽然PsExec是一个有用的工具,但是只有在绝对必要时才使用它,因为它会在远程服务器上创build一个服务,新创build的远程服务会生成一个运行代码的进程,然后该服务应该自动执行,删除。 但是,我遇到了PsExec服务失败的服务器,以及由于某种原因失败的众多孤立进程。 所以,通过我的讲道,下面是使用PowerShell的一个等价物:

 Get-WmiObject -ComputerName "<REMOTE-SERVER-NAME>" -class Win32_PerfFormattedData_PerfProc_Process -Impersonation Impersonate -Filter "PercentProcessorTime != 0 and name != '_Total'" | Select-Object name, PercentProcessorTime, IDProcess