wrote:
> Hi,
>
> Am attempting to run the simple script as follows (sourced from:
> http://techtasks.com/code/viewbookcode/443)
This code is buggy and I suspect nobody ever tested it.
> use strict;
> use warnings;
> use Data:
umper;
> use Win32::OLE;
> $Win32::OLE::Warn = 3;
>
> #use lib 'H:\dev\perl\NSLC-Store-Mgmt\lib';
> #use NSLC::Store::Mgmt;
>
> my %args;
>
> $args{name} = 'TESTVAR';
> $args{value} = 'TESTVALUE';
> $args{target} = '.';
>
> set_env_var(\%args);
>
> sub set_env_var {
> my ($args,) = @_;
> my $strVarName = $args->{name};
> my $strVarValue = $args->{value};
> my $strComputer = $args->{target};
>
> my $objVarClass = Win32::OLE->GetObject('winmgmts://' .
> $strComputer . '/root/cimv2:Win32_Environment');
> my $objVar = $objVarClass->SpawnInstanceobjVar->Name eq
> $strVarName;
These have to be 2 statements:
my $objVar = $objVarClass->SpawnInstance_ # note the underscore
$objVar->{Name} = $strVarName;
> $objVar->{VariableValue} = $strVarValue;
> $objVar->{UserName} = '<SYSTEM>';
> $objVar->PutWScript->Echo('Created environment variable ' .
> $strVarName);
and again:
$objVar->Put_;
WScript->Echo('Created environment variable ' . $strVarName);
# at least I think so, I don't know WScript
> }
>
> The following message is returned.
> retrying default method at C:/Perl/site/lib/Win32/OLE/Lite.pm line
> 156.
> Win32::OLE(0.1403) error 0x80020003: "Member not found"
> in METHOD/PROPERTYGET "" at H:\dev\perl\test\setenv.pl line 28
> shell returned 9
>
> I am completely new to using perl in a windows environment and am not
> sure where to start debugging. I have read all that I can via module
> docs and web information but am still having no luck.
> As far as I can tell, syntactically the script is fine but I am not
> sure how the guts of $objVarClass->SpawnInstanceobjVar->Name eq
> $strVarName; is working. I am running this on XP pro using activeperl
> 5.8.8(820).
For using the WMI interface the M$ WMI Reference is the best information
http://msdn2.microsoft.com/en-us/lib...8VS.85%29.aspx
Thomas
--
$/=$,,$_=<DATA>,s,(.*),$1,see;__END__
s,^(.*\043),,mg,@_=map{[split'']}split;{#>J~.>_an~>>e~......>r~
$_=$_[$%][$"];y,<~>^,-++-,?{$/=--$|?'"':#..u.t.^.o.P.r.>ha~.e..
'%',s,(.),\$$/$1=1,,$;=$_}:/\w/?{y,_, ,,#..>s^~ht<._..._..c....
print}:y,.,,||last,,,,,,$_=$;;eval,redo}#.....>.e. r^.>l^..>k^.-