WMI访问IIS7

时间:2013-07-31 18:07:10

标签: iis-7 wmi wmi-query servermanager

我们有一个内部工具,可以枚举服务器的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 CIM Studio中探索WMI对象时,即使对于我的本地IIS 7.5,我也不希望出现任何对象,例如SiteApplication个对象。我正在使用root\WebAdministration作为命名空间。

这些WMI内容是否适用于IIS 7.5?我确保打开“IIS 6 WMI兼容性”。是否有任何替代的轻量级方法来查询IIS实例的元数据?

1 个答案:

答案 0 :(得分:0)

  1. 您可以通过WMI管理IIS 7.5,最简单的WQL查询SELECT Name from Site将输出可用站点列表。请参阅"Managing Sites with IIS 7.0's WMI Provider"

    注意:如果您打算使用IIS6脚本,可能需要重写它们。 IIS6的大多数脚本都不能与IIS7一起使用,因为IIS 6和IIS7的WMI提供程序中的方法不同。

  2. 您可以通过以下方式启动CIM Studio:

    1. 在您的广告联盟中共享C:\Program Files (x86)\WMI Tools,并将您帐户的读/写访问权限设置为共享。
    2. 启动IE并输入\\hostname\WMI Tools\studio.htm网址。
  3. 如果您仍无法启动WMI Studio,请使用wbemtest工具浏览root\WebAdministration命名空间。