我一直在尝试编写一个 Perl 脚本来检查远程服务器的服务状态。我正在使用Win32::Service模块来实现我的目标。
我发现返回的某些服务值Win32::Service::GetStatus
CurrentStatus
与从 services.msc 小程序中观察到的值不完全相同。
这是我正在使用的一段脚本以及来自 script 和servics.msc
.
use Data::Dumper;
use Win32;
use Win32::Service;
use strict;
use warnings;
my %statcodeHash = ( '1' => 'stopped.',
'2' => 'start pending.',
'3' => 'stop pending.',
'4' => 'running.',
'5' => 'continue pending.',
'6' => 'pause pending.',
'7' => 'paused.' );
my @serviceNames = qw(NNMAction RpcEptMapper smstsmgr SNMPTRAP);
foreach my $serv (@serviceNames)
{ my %status;
my $ret = Win32::Service::GetStatus('nnmi.hclt.corp.hcl.in', $serv, \%status);
if ($ret)
{ print "success\t$statcodeHash{$status{CurrentState}}\t$serv\n";
}
else
{ print Win32::FormatMessage(Win32::GetLastError()), "\n";
}
}
脚本的输出
D:\AVI MEHENWAL\PERL\SCRIPTS\PROJECTS\Serve Management>perl -w perl_RemoteServiceStatus.pl
success stopped. NNMAction
success running. RpcEptMapper
success stopped. smstsmgr
success stopped. SNMPTRAP
来自 Services.msc 的输出
Name Descrition Status StartupType LogOnAs
NNMAction bla bla bla Started Manual LocalSystem
谁能建议我应该遵循什么方法来实现我的目标,我的方法是错误的还是从 Perl 模块的角度来看我缺少什么?