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";