Thread Win32::OLE wie jetz? (10 answers)
Opened by oblivion at 2006-02-28 16:11

esskar
 2006-03-01 15:00
#37165 #37165
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
schau dir das mal an

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
use warnings;
use strict;
use Getopt::Long;
use Pod::Usage;
use Win32::OLE;

# Your usual option-processing sludge.
my %opts;
GetOptions (\%opts, 'help|h|?', 'remote=s')
or pod2usage (2);

(exists $opts{'help'})
and pod2usage ('-exitstatus' => 0, '-verbose' => 2);

# Ensure exactly one argument after options.
scalar @ARGV == 1
or pod2usage (2);

my ($class) = @ARGV;

# Bomb out completely if COM engine encounters any trouble.
Win32::OLE->Option ('Warn' => 3);

# Get a handle to the SWbemServices object of the machine.
my $computer = Win32::OLE->GetObject (exists $opts{'remote'}
? "WinMgmts://$opts{'remote'}/"
: 'WinMgmts:');

# Get the SWbemObjectSet of all objects of the class.
my $instances_set = $computer->InstancesOf ($class);

# Convert set to Perl array.
my @instances = Win32::OLE::Enum->All ($instances_set);

# Display all properties of an object.
sub dump_obj ($) {
my ($obj) = @_;
# Get set of properties of the class.
my $props_set = $obj->{'Properties_'};

# Convert set to Perl array.
my @props = Win32::OLE::Enum->All ($props_set);
foreach my $prop (@props) {
my $name = $prop->{'Name'};
printf "%32s ", $name;
my $value;
if ($prop->{'IsArray'}) {
$value = '<array>';
}
else {
$value = $prop->{'Value'};
defined $value
or $value = '<undefined>';
}
print "$value\n";
}
}

foreach my $instance (@instances) {
dump_obj ($instance);
print "\n";
}

exit 0;



=head1 NAME

instances.pl - Dump all instances of a WMI class

=head1 SYNOPSIS

instances.pl [ options ] <WMI class name>

Options:

--help Display help and exit
--remote <host> Operate on <host> instead of local machine

=head1 SEE ALSO

http://msdn.microsoft.com/library/en-us/wmisdk/wmi/wmi_classes.asp


call:

instances.pl Win32_Battery

View full thread Win32::OLE wie jetz?