In my case Windows Server 2003 R2 SP2 was hosting a lot of in-house made COM+ applications. One of the COM+ applications was utilizing a lot of CPU power and Task Manager will not be of great help since it will show dllhost as process name. But, using Process Explorer will help to find the process id and service (for example I'll show how to find COM+ System Application, but the procedure can be used for any in-house made COM+ applications) :
$coma = New-Object -ComObject COMAdmin.COMAdminCatalog
$comapps = $coma.GetCollection("Applications")
$comapps.Populate()
Now $comapss has all com+ applications, and the output looks like this:
The process id is : {02D4B3F1-FD88-11D1-960D-00805FC79235}. Using PowerShell we can find which COM+ application is running behind this process id :$coma = New-Object -ComObject COMAdmin.COMAdminCatalog
$comapps = $coma.GetCollection("Applications")
$comapps.Populate()
Now $comapss has all com+ applications, and the output looks like this:
If your server is hosting a lot of COM+ like it was in my case, searching for particular process id can be done using (for example):
$comapps | ? { $_.key -like "*02D4B3F1-FD88-11D1-960D-00805FC79235*"}
I hope this procedure will help some else who is desperate to find out which COM+ application is not behaving as should.