私はこのPerlコードを変更する助けが必要です。私はホスト上のすべてのサービスのリストを取得できます。しかし、私はRed
(停止した)のサービスの電子メールメッセージを送信することにのみ関心があります。私はその条件をどこで設定するのかはわかりません(foreach内、おそらく)?今Perlで関連する行を選択するには?
出力:
Service: AeLookupSvc - Green - Auto
Service: Alerter - Red - Disabled
Service: ALG - Red - Manual
Service: AppMgmt - Green - Manual
Perlコード:
my @servstat = ("Red","Green");
my $computer = "localhost";
my $winsvcs;
my $wmiObj = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\CIMV2")
or die "WMI connection failed.\n";
#get all services
my $servSet = $wmiObj->ExecQuery("SELECT * FROM Win32_Service", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
foreach my $serv (in $servSet) {
my $sname = $serv->{name};
my $sstate = $serv->{started};
my $ssmode = $serv->{startmode};
$winsvcs .= "Service: " . $sname . " - " . $servstat[$sstate] . " - " . $ssmode . "\n";
}
@ cjd143SD:ご覧のとおり、私はどのようにしたらよいか説明しましたが、あなたのテクニックもうまくいくはずです。 –
ご協力いただきありがとうございます。 – cjd143SD
'ARRAYリファレンスではありません。 '、' $ serv($ {$ servSet})'を参照しています。 – cjd143SD