如何使用批处理文件在 IIS6 中获取网站的根/主目录?
我的场景:
我正在创建一个工具来总结和报告 IIS 中的站点。我正在使用批处理文件并运行 iisweb /query 来获取所有站点,然后循环遍历结果并使用 iisvdir /query "Website Name" 来获取虚拟目录。
但是它必须与 IIS6 向后兼容,并且我无法获取该站点的主目录。
如何使用批处理文件在 IIS6 中获取网站的根/主目录?
我的场景:
我正在创建一个工具来总结和报告 IIS 中的站点。我正在使用批处理文件并运行 iisweb /query 来获取所有站点,然后循环遍历结果并使用 iisvdir /query "Website Name" 来获取虚拟目录。
但是它必须与 IIS6 向后兼容,并且我无法获取该站点的主目录。
我认为您不能直接从批处理文件中执行此操作,但您应该能够从可以从批处理文件中调用的 vbscript 执行此操作。
诀窍是使用IIS WMI 提供程序,它使您可以访问 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 的机器,所以我目前无法对此进行测试,但如果您在让它工作时遇到任何问题,请随时在评论中告诉我,我会尽我所能最好解决问题。
我没有 IIS6 服务器,但是,通过一些搜索,我发现:
%SystemRoot%\system32\inetsrv\MetaBase.xml
IIS Metabase (IIS 6.0));%SystemRoot%\system32\inetsrv\MBSchema.xml
Path
属性。IIsWebVirtualDir
使用 xmlstartlet,如下所示的命令将输出根路径:
xml sel -t -v "//IIsWebVirtualDir[@Location='/LM/W3SVC/1/ROOT']/@Path" "%SystemRoot%\system32\inetsrv\MetaBase.xml"
也许架构需要更正。这可以是命令行方法。我无法测试它,因为我没有任何 IIS6 服务器,也无法获得任何 MetaBase.xml 示例。