1

我们有一个内部工具可以枚举服务器的 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 实例的元数据?

4

1 回答 1

0
  1. 您可以通过 WMI 管理 IIS 7.5,最简单的 WQL 查询SELECT Name from Site将输出可用站点的列表。请参阅“使用 IIS 7.0 的 WMI 提供程序管理站点”

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

  2. 您可以这样启动 CIM Studio:

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

于 2013-12-11T11:12:19.153 回答