web-dev-qa-db-ja.com

wmicがリモートサーバーにぶら下がっていますか?

前の質問の情報に基づいて、wmicを学習しようとしています。

リモートサーバーで最も多くのリソースを使用しているプロセスを調べようと遊んでいます。私が思いついたのは、この投稿の下部にあります。ローカルマシンでは非常にうまく機能しますが、サーバー(Windows 2003または2008)にpsexecを実行してこのコマンドを実行しようとすると、ほぼ毎回ハングします。 ctrl + cで停止することすらできません。 RDPを使用して(別のユーザー名を使用して)、このコマンドがハングするマシンの1つにアクセスしました。 psexecからコマンドを送信するユーザー名には、タスクマネージャーにリストされている2つの項目、cmdとwmicが表示されます。コマンドを送信してから数時間後、タスクマネージャーに残りました。それらを終了すると、ローカルマシンのコンソールが解放されます。

これがハングしている理由を調べてみましたが、何も見つかりません。私はシステム管理者の1人にも尋ねましたが、彼らはいつも忙しすぎてNOCの低い人を助けることができません(ただし、合法的に。彼らは本当に忙しいです)。何がうまくいかないかについてのアイデアはありますか?

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

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
3
Simon Catlin