wmic 挂在远程服务器上?

wmic 挂在远程服务器上?

根据我之前的问题的信息,我正在尝试学习 wmic。

我正在尝试查看远程服务器上哪些进程占用了最多的资源。我设法想出的方法位于本文的末尾。它在我的本地计算机上运行良好,但是当我使用 psexec 进入服务器(Windows 2003 或 2008)并尝试运行此命令时,它几乎每次都会挂起。我甚至无法使用 ctrl+c 来停止它。我使用 RDP(使用不同的用户名)进入此命令挂起的其中一台计算机。从 psexec 发送命令的用户名显示任务管理器中列出了两个项目,cmd 和 wmic。发送命令后,它们在任务管理器中保留了几个小时。当我结束它们时,它会释放我本地计算机上的控制台。

我尝试查找可能挂起的原因,但一无所获。我还询问了我的一位系统管理员,但这些人总是太忙,无法帮助低级的 NOC 人员(尽管这是合法的。他们确实非常忙)。您知道可能出了什么问题吗?

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

答案1

我强烈建议您放弃 WMIC.EXE,改用 PowerShell。PowerShell 允许您使用 RPC 访问远程服务器的 WMI 接口,从而无需使用 PsExec。尽管 PsExec 是一个有用的工具,但我只会在绝对必要时使用它,因为它会在远程服务器上创建一个服务,然后新创建的远程服务会生成一个进程来运行您的代码,然后该服务应该会自动删除。但是,我遇到过 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

相关内容