use strict; use Win32::OLE qw( in ); my $NameSpace = "root/cimv2"; my $Machine = shift @ARGV || "."; $Machine =~ s/^[\\\/]+//; print $Machine."\n"; my $WMIServices = Win32::OLE->GetObject( "winmgmts:{impersonationLevel = impersonate}!//$Machine/$NameSpace" ) || die; # get TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory print "Win32_OperatingSystem: "; my $memOS = $WMIServices->InstancesOf(Win32_OperatingSystem); printf "%s %ld %ld %ld %ld",$memOS->{Name}, $memOS->{TotalVisibleMemorySize}, $memOS->{FreePhysicalMemory}, $memOS->{TotalVirtualMemorySize}, $memOS->{FreeVirtualMemory};