Доступ WMI к IIS7

У нас есть внутренний инструмент, который перечисляет сайты и приложения IIS для сервера. Он использует код, похожий на этот:

using (var serverManager = ServerManager.OpenRemote(serverName))
{
    var site = serverManager.Sites[siteName]; // This is slow

    // And just starting to enumerate Applications is incredibly slow
    foreach (var application in site.Applications)
    {
        // ...
    }
}

Проблема, с которой я столкнулся, заключается в том, что при доступе к коллекции Sites время отклика очень велико при подключении к серверу через нашу VPN. Доступ к приложениям для сайта еще медленнее. Моя теория заключается в том, что медлительность вызвана тем фактом, что весь набор метаданных для сайтов, вероятно, пересылается по сети. Однако мне нужна только часть данных сайта.

Моя теория заключается в том, что если я переключу код на использование запросов WMI, я смогу запрашивать только те поля, которые относятся к этому приложению (например, SELECT Name from Site). К сожалению, при попытке исследовать объекты WMI в WMI CIM Studio, даже для моего локального IIS 7.5, я не обнаружил ни одного из ожидаемых объектов, таких как объекты Site и Application. Я использую root\WebAdministration для пространства имен.

Работает ли что-нибудь из этого WMI для IIS 7.5? Я убедился, что включена "Совместимость с IIS 6 WMI". Есть ли какие-либо альтернативные облегченные способы запроса метаданных для экземпляра IIS?


person Jacob    schedule 31.07.2013    source источник
comment
Есть ли у вас вообще что-нибудь в пространстве имен?   -  person bahrep    schedule 11.12.2013
comment
Извините, мне понадобится время, чтобы разобраться. После обновления до IE 11 я даже больше не могу запускать WMI CIM Studio.   -  person Jacob    schedule 11.12.2013
comment
wbemtest здесь помогает   -  person bahrep    schedule 11.12.2013
comment
Что ж, я могу запустить wbemtest, но не знаю, как его использовать. Я могу подключиться к пространству имен root\WebAdministration, но кроме этого, я не уверен, что доступно. Я попробовал Enum Instances, используя Site в качестве имени суперкласса, но затем получил ошибку сбоя загрузки Provider.   -  person Jacob    schedule 11.12.2013
comment
Неважно ... запустил wbemtest от имени администратора, и теперь я могу перечислить экземпляры для сайта.   -  person Jacob    schedule 11.12.2013
comment
... и добавление конфиденциальности пакетов в аутентификацию для удаленного подключения позволяет мне перечислять сайты с помощью этого инструмента. Очень полезно.   -  person Jacob    schedule 11.12.2013
comment
Мой ответ помог вам в 2013 году? Пожалуйста, тогда проголосуйте за него. :)   -  person bahrep    schedule 15.02.2019


Ответы (1)


  1. Вы можете управлять IIS 7.5 через WMI, и простейший запрос WQL SELECT Name from Site выдаст список доступных сайтов. См. «Управление сайтами с помощью IIS 7.0. Поставщик WMI ".

    Примечание. если вы собираетесь использовать сценарии для IIS6, вам может потребоваться их переписать. Большинство сценариев для IIS6 не будут работать с IIS7, потому что методы поставщика WMI для IIS 6 и IIS7 различны.

  2. Вы можете запустить CIM Studio следующим образом:

    1. Share C:\Program Files (x86)\WMI Tools on your network and set Read / Write access for your account to the share.
    2. Запустите IE и введите \\hostname\WMI Tools\studio.htm URL.
  3. Если вы по-прежнему не можете запустить WMI Studio, используйте инструмент wbemtest для изучения пространства имен root\WebAdministration.

person bahrep    schedule 11.12.2013