【问题标题】:IIS6 bat file - Home DirectoryIIS6 bat 文件 - 主目录
【发布时间】:2013-07-13 06:11:41
【问题描述】:

如何使用批处理文件在 IIS6 中获取网站的根目录/主目录??

我的场景:

我正在创建一个工具来总结和报告 IIS 中的站点。我正在使用批处理文件并运行 iisweb /query 来获取所有站点,然后循环遍历结果并使用 iisvdir /query "Website Name" 来获取虚拟目录。

但是它必须向后兼容 IIS6,我在获取站点的主目录时遇到了麻烦。

【问题讨论】:

  • 所以我猜你需要它来使用 IIS6 和 IIS7?我们可以忽略 IIS5 吗?您是否已有确定 IIS 版本的方法?
  • 发布您目前所拥有的内容,这样我们就不会猜测了。
  • @RGuggisberg - 只有 IIS6 和 IIS7。版本由每台服务器上的配置数据库设置。在 IIS7 中,我可以获得所需的所有详细信息,但在 IIS6 中我不能。我可以使用 iisweb /query 获取名称和绑定,使用 iisvdir /query 获取虚拟目录。但我无法获取网站的主目录。
  • 我正在使用 ColdFusion 运行批处理文件并获得结果

标签: iis batch-file iis-6 home-directory


【解决方案1】:

我认为您不能直接从批处理文件中执行此操作,但您应该可以通过可以从批处理文件中调用的 vbscript 执行此操作。

诀窍是使用IIS WMI provider,它可以让您访问 IIS 元数据库。例如,下面的脚本应该回显本地服务器上每个虚拟目录的名称和路径。

set provider = GetObject("winmgmts://localhost/root/MicrosoftIISv2") 
set results = provider.ExecQuery("SELECT Name,Path from IISWebVirtualDirSetting")
for each item in results
  WScript.Echo item.Name
  WScript.Echo item.Path
next

如果您将此脚本保存为 iispaths.vbs(仅作为示例),则可以从批处理文件中调用它:

cscript //nologo iispaths.vbs

很遗憾,我无法访问装有 IIS6 的机器,因此我目前无法对此进行测试,但如果您在使用它时遇到任何问题,请随时在 cmets 中告诉我,我会我会尽力解决问题。

【讨论】:

    【解决方案2】:

    我没有IIS6服务器,但是通过搜索发现:

    1. IIS6 使用%SystemRoot%\system32\inetsrv\MetaBase.xml%SystemRoot%\system32\inetsrv\MBSchema.xml 存储配置(The IIS Metabase (IIS 6.0));
    2. 如果您的服务器不经常更改主目录,则应更新这些 xml;
    3. 使用命令行解析器(如xmlstartlet),您可以使用XPathIIsWebVirtualDir节点(根据Metabase Structure)提取Path属性。

    使用 xmlstartlet,如下命令会输出根路径:

    xml sel -t -v "//IIsWebVirtualDir[@Location='/LM/W3SVC/1/ROOT']/@Path" "%SystemRoot%\system32\inetsrv\MetaBase.xml"
    

    也许架构需要更正。 这可以是命令行方法。我无法测试它,因为我没有任何 IIS6 服务器,也无法获取任何 MetaBase.xml 示例。

    【讨论】:

    • 我可以确认该文件可用于 iis6。我选择了另一个答案,因为它不需要任何安装或任何东西。
    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2012-03-19
    • 2022-01-09
    • 2013-08-28
    相关资源
    最近更新 更多