#! perl -w use strict; use Win32::OLE ('in'); Win32::OLE->Option(Warn => 0); my $server = shift || ''; my $locator = Win32::OLE->new('WbemScripting.SWbemLocator') or die "Cannot access WMI on local machine: ", Win32::OLE->LastError; my $services = $locator->ConnectServer($server, 'root/cimv2') or die "Cannot access WMI on remote machine: ", Win32::OLE->LastError; my $enum = $services->InstancesOf("Win32_OperatingSystem") or die "Cannot access operating system information:", Win32::OLE->LastError; die "Cannot access operating system information\n" unless $enum->{Count}; my @int_items = qw/FreePhysicalMemory FreeVirtualMemory SizeStoredInPagingFiles FreeVirtualMemory TotalVirtualMemorySize TotalVisibleMemorySize/; for my $item ( in $enum ) { for my $prop (@int_items) { printf "%-30s %10dMb\n", $prop, $item->{$prop} / 1024; } }