Hi Ken
 
I have tried it, and it only works with a domain/AD account not a local
account.  The machines I need to access are all in workgroup config.  I
am guessing that it is something to do with the
WbemAuthenticationLevelPktPrivacy  value, but I have tried several from
the MSDN site and always get the following error:
 
C:\Scripting\toys>wbem.pl
Can't call method "Security_" on an undefined value at
C:\Scripting\toys\wbem.pl line 27.
 
Cheers for any advice
 
 
Dave

________________________________

From: Ken Cornetet [mailto:ken.corne...@kimball.com] 
Sent: 24 March 2009 15:13
To: David Evans; perl-win32-users@listserv.ActiveState.com
Subject: RE: WMI remote querying



Try it like this:

 

use strict;

use Win32::OLE;

 

use constant wbemFlagReturnImmediately => 0x10;

use constant wbemFlagForwardOnly => 0x20;

use constant WbemAuthenticationLevelPktPrivacy => 6;

 

my $computer = "xxx";

my $admin = "yyy";

my $pwd = "zzz";

 

my $wbem = Win32::OLE->new('WbemScripting.SWbemLocator');

my $objWMIService = $wbem->ConnectServer($computer,"",$admin,$pwd); 

$objWMIService->Security_->{authenticationLevel} =
WbemAuthenticationLevelPktPrivacy;

 

my $colItems = $objWMIService->ExecQuery("SELECT * FROM
Win32_OperatingSystem", "WQL", wbemFlagReturnImmediately |
wbemFlagForwardOnly);

 

foreach my $objItem (in $colItems) {

      print "ServicePackMajorVersion:
$objItem->{ServicePackMajorVersion}\n";

      print "ServicePackMinorVersion:
$objItem->{ServicePackMinorVersion}\n";

      print "\n";

}

 

 

 

From: perl-win32-users-boun...@listserv.activestate.com
[mailto:perl-win32-users-boun...@listserv.activestate.com] On Behalf Of
David Evans
Sent: Tuesday, March 24, 2009 8:21 AM
To: perl-win32-users@listserv.ActiveState.com
Subject: WMI remote querying

 

Hi wonderful people

 

I hope one of you can help me.  I need to access WMI on a remote Win XP
desktops and I am getting permission errors when using the local admin
account on the remote box.  Any ideas?

 

CODE:

 

use DBI;
my $machine = 'server';
my $dbh = DBI->connect('dbi:WMI:'.$machine,'admin','admin');
  print "$dbh\n";
my $sth = $dbh->prepare('SELECT * FROM Win32_OperatingSystem');
$sth->execute;
while (my @row = $sth->fetchrow) {
    my $printer = $row[0];
    printf "ServicePackMajorVersion is %s\n",
$printer->{ServicePackMajorVersion}, $machine;
    printf "ServicePackMinorVersion is %s\n",
$printer->{ServicePackMinorVersion}, $machine;
};

ERROR:

 

C:\Scripting\toys>wmi.pl
Win32::OLE(0.1707) error 0x80070005: "Access is denied"
    after character 0 in "winmgmts:\\server\root\cimV2" at
C:/Perl/site/lib/DBD/
WMI.pm line 95

Any help greatly appreciated.

 

Thanks

 

Dave

 

PS

My system is...

Host: WinXP SP2

Perl: 5.8.8 Build 822

DBD::WMI 0.06

DBI 1.607

_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to