加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – WMI查询返回不完整的结果

发布时间:2020-12-15 23:36:02 所属栏目:大数据 来源:网络整理
导读:我正在研究一个用于检查许多服务是否正在运行的perl脚本.为此,我们使用WMI查询远程 Windows服务器: my $WMI_locator = Win32::OLE-new('WbemScripting.SWbemLocator');$WMI_locator-{Security_}-{AuthentificationLevel} = 6;my $computer = $WMI_locator-C
我正在研究一个用于检查许多服务是否正在运行的perl脚本.为此,我们使用WMI查询远程 Windows服务器:

my $WMI_locator = Win32::OLE->new('WbemScripting.SWbemLocator');
$WMI_locator->{Security_}->{AuthentificationLevel} = 6;
my $computer = $WMI_locator->ConnectServer($server,'rootcimv2',$adminuser,$adminpasswd);
my $services = $computer->ExecQuery('SELECT * FROM Win32_Service','WQL',$flag_return_immediately | $flag_forward_only);

在我的开发笔记本电脑上执行时,此代码段完美无缺.但是,当我尝试从生产服务器运行它时会发生奇怪的事情:对于某些远程Windows计算机,我只能获得大约一半的服务列表.

我已经研究过这个问题,发现这个问题只发生在服务很多的服务器上(大约150个),并且平均ping的差异很大(本地约60毫秒,生产服务器约215毫秒).问题似乎来自WMI而不是perl;我试图从DOS命令行查询服务器,我在尝试获取服务时遇到错误,虽然查询CPU工作正常:

E:&;wmic /NODE:server /USER:adminuser /PASSWORD:adminpasswd SERVICE GET Caption,State
Node - server
ERROR:
Code = 0x800706be
Description = The remote procedure call failed.
Facility = Win32

E:&;wmic /NODE:server /USER:adminuser /PASSWORD:adminpasswd CPU GET Name,Status
Name                                             Status
Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz  OK
Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz  OK
Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz  OK
Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz  OK

鉴于此,我猜这个问题与网络有关,但我们现在正在一个我不熟悉的国家钻研.是否有一些我错过的参数和/或我正在做事的方式有问题?

谢谢你的回答!

解决方法

此错误几乎总是(尽管不是唯一的)由不同版本的SQL Server的多个实例引起.为了缩小问题范围,请尝试 WMI Diagnostic Utility,它旨在帮助解决此类问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读