我是脚本/编程和WMI的新手,但我的任务是从系统列表中收集信息,以查看屏幕保护程序是否处于活动状态。我需要能够将信息存储到文件中,并且每10分钟左右运行一次cron作业,并将结果附加到所述文件。
在那里还有注释要写入文件,因为我只是让它首先返回正确的信息。
你们可以提供的任何指示都会很棒。
这是我到目前为止所做的:
#!/usr/bin/perl
use strict;
my $file = 'hosts.txt';
open my $info, $file or die "Could not open $file: $!";
while( my $line = <$info>) {
my $user = "uid";
my $password = "pwd";
my $server = $line;
my $result = `wmic -U domain/$user%"$password" //$server "select * from Win32_Process WHERE Name = 'LogonUI.exe'"`;
my @results = split(/\n/,$result);
my @tmparray = split(/\|/, @results[2]);
my $isActive = 0;
use POSIX qw/strftime/;
if (@tmparray[0] eq 'LogonUI.exe') {
$isActive = 1;
}
else {
$isActive = 0;
}
print strftime("Date:%Y-%m-%d %H:%M:%S, ", localtime(time));
print "Host:$server, Screensaver IsActive:$isActive,\n";
}
答案 0 :(得分:0)
Win32::OLE
支持创建管理对象。我这样用过它:
Win32::OLE->GetObject( "winmgmts:\\\\$host\\$path" );
然后使用该对象调用ExecQuery
方法:
$wmi->ExecQuery(
$query
, 'WQL'
, ( ( $flags // 0 )
|| wbemFlagReturnImmediately | wbemFlagForwardOnly
)
);
我只在本地计算机上使用它来自动更改我的IP配置。