#!perl -w use strict; use Win32::OLE qw(in); #Mode: Window Management Instrumentation (WMI) # processproperties my @properties = qw(Caption CreationClassName CreationDate CSCreationClassName CSName Description ExecutablePath ExecutionState Handle HandleCount InstallDate KernelModeTime MaximumWorkingSetSize MinimumWorkingSetSize Name OSCreationClassName OSName OtherOperationCount OtherTransferCount PageFaults PageFileUsage ParentProcessId PeakPageFileUsage PeakVirtualSize PeakWorkingSetSize Priority PrivatePageCount ProcessId QuotaNonPagedPoolUsage QuotaPagedPoolUsage QuotaPeakNonPagedPoolUsage QuotaPeakPagedPoolUsage ReadOperationCount ReadTransferCount SessionId Status TerminationDate ThreadCount UserModeTime VirtualSize WindowsVersion WorkingSetSize WriteOperationCount WriteTransferCount); # processmethods my @methods = qw(Create Terminate GetOwner GetOwnerSid); my $server = ''; # local machine my $locatorObj = Win32::OLE->new('WbemScripting.SWbemLocator') or die ("Error in creating locator object: ".Win32::OLE->LastError()."\n"); $locatorObj->{Security_}->{impersonationlevel} = 3; my $serverObj = $locatorObj->ConnectServer($server, 'root\cimv2') or die ("Error in creating server object: ".Win32::OLE->LastError()."\n"); my $procSchema = $serverObj->Get('Win32_Process'); #@properties = map{ $_->{Name} } (in $procSchema->{Properties_}); #@methods = map{ $_->{Name} } (in $procSchema->{Methods_}); foreach my $process (in $serverObj->InstancesOf("Win32_Process")){ foreach (@properties){ printf ("'%20s' => '%s'\n", $_, $process->{$_} || '' ); } print ("-----------------------------------------------\n"); }