The following code should work for you. I prefer to use the "in" method of Win32::OLE (which must be explicitly imported), which really just calls Win32::OLE::Enum->All(). Also, make sure to check the Class property of the objects, because in addition to the IIsWebServer objects, you'll normally get IIsWebInfo and IIsFilters, as well.
#!/usr/bin/perl -w
use strict;
use Win32::OLE qw(in);
my $hostname = shift;
my $service = Win32::OLE->GetObject("IIS://$hostname/W3SVC");
for my $server (in $service) {
if ($server->{Class} eq "IIsWebServer") {
print $server->{ADsPath} . ': ' . $server->{ServerComment} . "
+\n";
}
}
-jehuni