2017-04-03 8 views
1

問題の定義:基本的にIISサーバーであるWebサーバーで構成レベルを変更しました。スレッド数を既定値の300から450に増やしました。Powershellを使用してWindowsリソースモニタデータをエクスポートする

この変更により、サーバーがクラッシュする可能性があります。

私たちはワーカースレッドを監視したいので、定期的にこれをデータベースに記録します。これまでのところ

私の進捗状況:

は、これまでのところ私は1つのexeファイルは、下記のPowerShellコマンドを実行すると詳細情報を得ることができました。

(ただ、任意のプロセスとのw3wp.exeを置き換える結果を得るために名前を付ける)

$name = "w3wp.exe" 
$processHandle = (Get-CimInstance Win32_Process -Filter "Name = '$name'").ProcessId 
$Threads = Get-CimInstance -Class Win32_Thread -Filter "ProcessHandle = $processHandle" 
$threads | Select-Object priority, thread*, User*Time, kernel*Time | 
Out-GridView -Title "The $name process has $($threads.count) threads" 

問題:w3wp.exeのが実行されている場合、上記のPowerShellスクリプトでは、EXEファイルのためになる私を与えることができをではありません複数のPIDを持つ。

複数の実行中のexeの結果を得る方法はありますか?

表は

プロセッサ名です。 PID |労働者の名前|スレッド数|

答えて

1

だから、私はあなたが得ると期待しているだろうあなたのコードを実行しているエラーを得ただけでなく

-Filterは次のようになりますので、...それがなかったとして理にかなって
Get-CimInstance : Invalid query 
At line:3 char:12 
+ $Threads = Get-CimInstance -Class Win32_Thread -Filter "ProcessHandle ... 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Get-CimInstance], CimException 
    + FullyQualifiedErrorId : HRESULT 0x80041017,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand 

私はchrome.exeをテストとして使用しています。どちらが有効ではないか。

ProcessHandle = 7224 7420 8688 8800 8916 460 10884 7340 10956 6756 14604 13260 9588 18020 22264 11516 17684 12664 

だから、僕は、複数の$processHandleのを可能にするためにループに追加され、それが正常に動作しているようです。

$Threads = $processHandle | Foreach-Object{ 
    Get-CimInstance -Class Win32_Thread -Filter "ProcessHandle = $_" 
} 
+0

これはメイトです! Mattに感謝します。 –

関連する問題