#!perl
use strict;
use autodie;
use Win32::Service qw'GetServices GetStatus';
my @state_name = qw( UNKNOWN Stopped START_PENDING STOP_PENDING
Started CONTINUE_PENDING PAUSE_PENDING
PAUSED ERROR );
my $filename = '/Perl/XiServiceList.txt';
open FILE, '<', $filename;# autodie
my $hostname = <FILE>;
chomp $hostname;
print "Checking Services available for '$hostname'\n";
my %available=();
GetServices($hostname,\%available) or die "$!";
# add short names
$available{$_} = $_ for values %available;
print "Checking services in list\n";
while (<FILE>){
# trim leading and trailing whitespace
s/^\s+|\s+$//g;
if (exists $available{$_}){
my $shortname = $available{$_};
my %status;
GetStatus($hostname, $shortname, \%status);
my $state_no = $status{'CurrentState'};
printf " ServiceStatus: %s %s %s \n",
$hostname, $shortname, $state_name[$state_no];
} else {
print "-- ERROR -- '$_' status not avaiable\n";
}
}
close FILE;
poj |