2017-03-14 19 views
1

プロセス数を表示させようとしました。条件は親プロセスIDと子プロセスです。親プロセスと子プロセスを取得して表示できましたが、親プロセスに関する子プロセスの数を表示したいとします。PowerShellを使用してプロセス数を取得しようとしています

私はそれを入れているスクリプトの一部を見つけてください。

Write-Host "ADS services with Java processes" 
Invoke-Command -Computer SM06388.dom1.e-ssi.net -ScriptBlock { 
    Get-WmiObject -Class Win32_Service -Filter "name='OpenLink_ADS_Fenix_PCT'" 
} | ForEach-Object { 
    if ($_.State -eq "running") { 
    Write-Host $_.PSComputerName $_.Name $_.State $_.StartMode - ForegroundColor green 
    Get-WmiObject -Class Win32_Process -Filter "Name='java_svc_wrapper.exe'" | ForEach-Object { 
     Get-WmiObject Win32_Process -Filter "ParentProcessId=$($_.ProcessId)" 
    } | Format-Table ProcessName,ProcessId,Handle,ParentProcessId -Auto 
    } else { 
    Write-Host $_.PSComputerName $_.Name $_.State $_.StartMode -ForegroundColor red 
    } 
} 

私はスクリプトを使用して取得する出力は私が表示しようとしています。ここ

ADS services with Java processes 
sm06388.dom1.e-ssi.net OpenLink_ADS_FENIX_PCT Running Auto 

ProcessName ProcessId Handle ParentProcessId 
----------- --------- ------ --------------- 
java.exe  12164 12164    5520 
java.exe   9392 9392    5520 
java.exe  12892 12892    5520 
java.exe  10396 10396    5520 
java.exe   9868 9868    5520 
java.exe  11584 11584    5520 
java.exe  14760 14760    5520 
java.exe   9740 9740    5520 
java.exe  12232 12232    5520 
java.exe  16432 16432    5520 
java.exe  15688 15688    5520

の下に貼り付けられますプロセスの数。誰でもこのカウントを表示する方法を教えてもらえますか?

答えて

0

ありがとうMaigiと4c74356b41。あなたの助けを借りて私はそれを理解しました。

$results = @() 

write-host "ADS services with Java processes" 
invoke-command -computer SM06388.dom1.e-ssi.net -scriptblock {get-wmiobject -Class win32_service -Filter "name='OpenLink_ADS_Fenix_PCT'"} | foreach-object { 
if ($_.State -eq "running") 
{write-host $_.PSComputerName $_.Name $_.State $_.StartMode - ForegroundColor green 
Get-WmiObject -Class Win32_Process -Filter "Name='java_svc_wrapper.exe'"|  ForEach-Object{ 
$results += (Get-WmiObject Win32_Process -Filter "ParentProcessId=$($_.ProcessId)").count} 
Write-host "No.of Child Java process $results" -ForegroundColor green 
} 
else 
{write-host $_.PSComputerName $_.Name $_.State $_.StartMode -ForegroundColor red } 
} 

予想される出力:

ADS services with Java processes 
sm06388.dom1.e-ssi.net OpenLink_ADS_FENIX_PCT Running Auto 
No.of Child Java process 11 
0

は、アレイ、およびディスプレイアレイの長さ(またはグループ化)にそれらを追加します。

$results = @() 

write-host "ADS services with Java processes" 
invoke-command -computer SM06388.dom1.e-ssi.net -scriptblock { 
    get-wmiobject -Class win32_service -Filter "name='OpenLink_ADS_Fenix_PCT'" 
} | foreach-object { 
    if ($_.State -eq "running") { 
     write-host $_.PSComputerName $_.Name $_.State $_.StartMode - ForegroundColor green 
     Get-WmiObject -Class Win32_Process -Filter "Name='java_svc_wrapper.exe'"| 
     ForEach-Object { 
      $results += Get-WmiObject Win32_Process -Filter "ParentProcessId=$($_.ProcessId)" 
     } 
    } 
    else { 
     write-host $_.PSComputerName $_.Name $_.State $_.StartMode -ForegroundColor red } 
    } 

    $results 
+0

おかげでなく、フォーマットテーブルなしで結果が不必要なすべての詳細を検索します。そして、私はプログラミングにかなり興味があります。ここで、配列の長さを表示しグループ化する方法を教えてください。私はあなたがペーストした上記のコードを実行しようとしました。しかし、私はすべての望ましくない情報を表示しました。 –

3

これは、明示的に問題のProcessNameのを探して、その結果をカウントし、余分な呼び出しであってもよいがゲット・プロセスを試してみてください。

(Get-Process -Computer hostname.com -Name 'javaw').count 
+0

ありがとうMaigi。しかし、Get-Processコマンドをリモートマシンで使用できると確信していますか?私はそうは思わないので –

+0

それはドキュメント(MSDNを参照)の有効なパラメータなので、私ははいと言うだろう。投稿前に確認しました – Maigi

関連する問題