本文的性质为“编著”。
“图形化网站管理者”请留步。
问题:当主机上的IIS服务由于各种原因无法打开时,无法看到当前系统内已经部署了哪些网站,以及其对应的目录等信息。
为解决这一问题,本文通过查看IIS服务器的配置文件来获取系统内已部署网站的信息。
可能的“误导”预警:配置文件的信息与IIS的版本有关系,但本文仅为了解决问题,将操作系统与IIS版本混在了一起。
对windows server 2003来说,IIS(版本6.0)配置文件全路径为:
%windir%\windows\system32\inetsrv\MetaBase.xml;
在MetaBase.xml文件内,<IIsWebServer>节点大概(这里用大概,是因为作者也没有深究[摊手])描述了IIS的“网站”下面的具体网站节点(ServerComment属性表明了节点的文本);在每个<IIsWebServer>后面,会跟着有<IIswebVirtualDir>节点,这里面描述了对应的网站在本地的路径等信息(Path属性里面包含了网站“主目录“的“本地路径”)。
对windows server 2008来说,IIS(版本7.0.0.0)配置文件全路径为:
%windir%\windows\system32\inetsrv\config\applicationHost.config;
在applicationHost.config文件内,<sites>节点下包含了IIS的“网站”下面的具体网站节点(每一个<site>代表了一个网站节点),在每一个<site>内,其name属性描述了IIS网站节点的显示文本;<site>节点的孙节点<virtualDirectory>的physicalPath属性描述了对应网站在本地驱动器的路径信息。
对windows7来说,IIS(版本7.0.0.0)配置文件全路径以及说明,与上面的windows server 2008相同。
对windows xp来说,IIS(版本5.1)配置文件全路径为:
%windir%\windows\system32\inetsrv\MetaBase.bin;
由于MetaBase.bin内保存着二进制的数据,很难查看。作者当前没有深究,但是大概使用%windir%\Inetpub\AdminScripts\findweb.vbs这个脚本能够获取到部署的网站的信息。另据说%windir%\Inetpub\AdminScripts下面的脚本都很好很强大……
最后,在IIS7中,使用%windir%\windows\system32\inetsrv\AppCmd.exe,在控制台利用“appcmd list site”命令,能够方便的列出当前部署的网站简要信息。
参考:
IIS7.0 Appcmd 命令详解:http://www.cnblogs.com/NatureSex/archive/2011/11/02/2233253.html
Adsutil.vbs脚本的基本用法:http://www.wodernet.com/4/401/20130219/562.html
MetabaseStructure:https://msdn.microsoft.com/en-us/library/ms524661(v=vs.90).aspx
将更改写入到 MetaBase.xml 中:http://doc.51windows.net/iismmc/?url=/iismmc/htm/mb_config_writechanges.htm
XP系统里找不到metabase.xml文件:http://bbs.csdn.net/topics/320268061