in reply to Re^2: Setting a WMI value using Perl Win32::OLE
in thread Setting a WMI value using Perl Win32::OLE

Turns out that Put_() has an UNDERSCORE even though the Win32::OLE docs (vaguely) give this as merely "Put()" -- use the underscore and it works.
my ($init, $max) = (256, 301); for (in($PageFiles)) { showProperties($_); $_->{InitialSize} = $init; $_->{MaximumSize} = $max; $_->LetProperty('InitialSize', $init); $_->LetProperty('MaximumSize', $max); $_->SetProperty(InitialSize => $init); $_->SetProperty(MaximumSize => $max); $_->Put_() # with UNDERSCORE in method name and print "3 Put_: " . Win32::OLE->LastError . "\n\n"; last; # just change 1st one }
Another thread here indicated the "Exec Query" SQL like interface is READ ONLY and offered the getting "instances
#my $PageFiles = $wmiService->ExecQuery("Select * from Win32_PageFileS +etting"); my $PageFiles = $wmiService->InstancesOf("Win32_PageFileSetting");
But that had nothing to do with my problem -- both methods work as long as you use the proper Put_ (with underscore) method. All 3 setting methods (hash assign, Let, and Set) seem to work fine even though not sure the differences if any.

Replies are listed 'Best First'.
Re^4: SOLVED Put_ UNDERSCORE: Setting a WMI value using Perl Win32::OLE
by Anonymous Monk on Jul 11, 2011 at 04:19 UTC

    Turns out that Put_() has an UNDERSCORE even though the Win32::OLE docs (vaguely) give this as merely "Put()" -- use the underscore and it works.

    You're severely confused, the two aren't related at all.

    Put is a Win32::OLE::Variant method

    Put_ is an OLE object method, SWbemObject.Put_ Method