#! perl -w use strict; use Data::Dumper; use Win32::PerfLib; my (%counters, %r_counters); Win32::PerfLib::GetCounterNames('', \%counters); # Build a reverse lookup table. Names are clearer than numbers. @r_counters{values %counters} = (keys %counters); # retrieve the id for process object my $processObj_id = $r_counters{Process}; # retrieve the id for the process ID counter my $processCounter_id = $r_counters{'ID Process'}; my %processes; # create connection to $server my $perflib = new Win32::PerfLib(''); # get the performance data for the process object $perflib->GetObjectList($processObj_id, \%processes); $perflib->Close(); my $pInstances = $processes{Objects}{$processObj_id}{Instances}; foreach my $p (keys %{$pInstances}) { my $pICounters = $pInstances->{$p}{Counters}; print "\nProcess name=$pInstances->{$p}{Name}\n"; foreach my $i (keys %{$pICounters}) { printf "%s=%s %s\n", $counters{$pICounters->{$i}{CounterNameTitleIndex}}||'?', $pICounters->{$i}{Counter}, exists $pICounters->{$i}{Display} ? $pICounters->{$i}{Display} : ''; } # print Dumper $pICounters; # Uncomment to view other available info }