IIS6 bat文件 - 主目录

时间:2013-07-15 11:30:19

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

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

我的情景:

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

然而,它必须向后兼容IIS6,我无法获取该网站的主目录。

2 个答案:

答案 0 :(得分:2)

我认为您不能直接从批处理文件中执行此操作,但您应该可以从可以从批处理文件调用的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的计算机,因此我暂时无法对此进行测试,但如果您在使用它时遇到任何问题,请随时在评论中告诉我并且我我会尽力解决这个问题。

答案 1 :(得分:1)

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

  1. IIS6使用%SystemRoot%\system32\inetsrv\MetaBase.xml%SystemRoot%\system32\inetsrv\MBSchema.xml存储配置(The IIS Metabase (IIS 6.0));
  2. 如果您的服务器没有经常更改主目录,那么应该更新那些xml;
  3. 使用命令行解析器(如xmlstartlet),您可以使用Metabase StructurePath节点(根据XPath)提取IIsWebVirtualDir属性。< / LI>

    使用xmlstartlet,如下所示的命令将输出根路径:

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

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