WMI-запрос не возвращает данные для конкретного сервера

У меня ниже Perl скрипт для получения информации о сайтах с разных серверов. Скрипт работает нормально, за исключением одного сервера.

#!C:/perl/bin/perl
use strict;
use Win32::OLE('in');         # WMI access and optimised flags

use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;

my $computer = "servername";

my $wmiWebObject = Win32::OLE->GetObject("WinMgmts:{impersonationLevel=impersonate,authenticationLevel=PktPrivacy}!//$computer/root/WebAdministration");
my $sites = $wmiWebObject->ExecQuery("SELECT Name from Site", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
foreach my $site (in $sites) {
    print "\nSite Name : " . $site->{Name} . "\n";
}

Я могу получить информацию о сайте с помощью Powershell для того же сервера, но не с Perl.

Get-WmiObject -Impersonation impersonate -Authentication PacketPrivacy -ComputerName servername -Namespace root/WebAdministration -Query "select Name from Site" | Select-Object {$_.Name}

Кто-нибудь может подсказать, почему Perl-скрипт не работает только для одного сервера, а powershell работает для того же сервера.

1 ответ

Решение

Поэтому я мог бы решить эту проблему, просто перезапустив службу WMI на сервере. Я нашел эту статью полезной.

Другие вопросы по тегам