Here's something to get you started:
use strict;
use Win32::OLE qw(in);
my $host = 'serverABC';
my $username = 'adminaccount';
my $password = 'secret';
my $WMI = Win32::OLE->new('WbemScripting.SWbemLocator');
my $WMIServices = $WMI->ConnectServer($host, 'root/cimv2', $username,
+$password)
or die ("Could not connect to $host");
$WMIServices->{Security_}->{ImpersonationLevel} = 3;
my $os_set = $WMIServices->InstancesOf("Win32_OperatingSystem");
my ($os_name, $os_version, $os_sp);
foreach my $os (in($os_set)) {
$os_name = $os->{'Caption'};
$os_version = $os->{'Version'};
$os_sp = $os->{'CSDVersion'};
}
print "OS = $os_name $os_version $os_sp\n";
Documentation for other Win32 WMI classes can be found here:
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/wmi_classes.asp