首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ApplicationPool类对象属性在WMI中不可用

ApplicationPool类对象属性在WMI中不可用
EN

Stack Overflow用户
提问于 2018-02-05 18:06:37
回答 1查看 771关注 0票数 1

我正在使用机器上的本地VBScript管理我的IIS应用程序池,或者通过运行在高特权身份下的ASP页面。

Microsoft文档列出了ApplicationPool类对象在此页https://msdn.microsoft.com/fr-fr/library/ms690608上的所有可用属性和方法。

虽然我能够使用.Recycle.Start.Stop方法,以及.Name属性,但其他所有方法和属性都不能用于应用程序池,如.GetState、.AutoStart、.ManagedPipelineMode.

文件坏了吗?

代码语言:javascript
复制
'For VBSCRIPT
Set o_Wbem_Locator = CreateObject("WbemScripting.SWbemLocator")
Set o_Wbem_Service = o_Wbem_Locator.ConnectServer("MyServerName", "root/MicrosoftIISv2")
Set o_Wbem_AppPoolsCollection = o_Wbem_Service.ExecQuery("SELECT * FROM IISApplicationPool")
For Each o_Wbem_AppPoolInstance In o_Wbem_AppPoolsCollection
    'Work
    o_Wbem_AppPoolInstance.Recycle

    'Work
    WScript.Echo o_Wbem_AppPoolInstance.Name

    'DOES NOT Work
    WScript.Echo o_Wbem_AppPoolInstance.GetState

    'DOES NOT Work
    WScript.Echo o_Wbem_AppPoolInstance.ManagedPipelineMode
Next
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-07 07:59:22

这里是解决方案:)

正如@Kul在评论中指出的那样,我连接到了错误的名称空间,并查询了错误的对象类。

命名空间

  • “root/MicrosoftIISv2 2”适用于IIS 6
  • "root/WebAdministration“适用于IIS 7和更高级别的

用于查询的对象类

  • “从IISApplicationPool中选择*”适合于IIS6
  • “从ApplicationPool中选择*”适用于IIS 7和更高级别的

因此,使用Vbscript或ASP中的WMI管理IIS应用程序池的正确工作代码如下:

代码语言:javascript
复制
'For VBSCRIPT
Set o_Wbem_Locator = CreateObject("WbemScripting.SWbemLocator")

'Suitable for IIS 6
'Set o_Wbem_Service = o_Wbem_Locator.ConnectServer("MyServerName", "root/MicrosoftIISv2")

'Suitable for IIS 7+
Set o_Wbem_Service = o_Wbem_Locator.ConnectServer("MyServerName", "root/WebAdministration")

'Suitable for IIS 6
'Set o_Wbem_AppPoolsCollection = o_Wbem_Service.ExecQuery("SELECT * FROM IISApplicationPool")

'Suitable for IIS 7+
Set o_Wbem_AppPoolsCollection = o_Wbem_Service.ExecQuery("SELECT * FROM ApplicationPool")


For Each o_Wbem_AppPoolInstance In o_Wbem_AppPoolsCollection
    'Works in IIS 6 and in IIS 7+
    o_Wbem_AppPoolInstance.Recycle    

    'Works in IIS 6 and in IIS 7+
    WScript.Echo o_Wbem_AppPoolInstance.Name    

    'DOES NOT Work in IIS 6
    'Works in IIS 7+
    WScript.Echo o_Wbem_AppPoolInstance.GetState    

    'DOES NOT Work in IIS 6
    'Works in IIS 7+
    WScript.Echo o_Wbem_AppPoolInstance.ManagedPipelineMode
Next

我谨感谢@Kul指出了所需语法上的根本差异,并感谢所有其他评论员帮助我完善IIS管理。我现在能够自动执行一些操作,以确保我的应用程序池已经启动,好,并且正在运行;)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48628772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档