iis6管理兼容性
Windows Server 2003 上的理兼 IIS 6.0 是个老古董,但直到今天,容性不少企业的理兼老旧系统还赖在它上面跑。我见过最夸张的容性案例,是理兼某家银行的内部报表系统,硬是容性从 2004 年撑到现在,IT 部门每次碰它都像拆炸弹。理兼
IIS 6 的容性管理兼容性问题,说白了就是理兼“新工具看不懂老配置”。你拿现代的容性 IIS 8 或 10 的管理控制台去连一台 2003 的机器,大概率会碰一鼻子灰——协议版本差太多,理兼MMC 管理单元直接拒绝连接。容性这不是理兼微软故意刁难,而是容性当年 IIS 6 的配置存储方式跟后来完全不一样。
IIS 6 用的理兼是 metabase,一个类 XML 的二进制数据库,存放在 system32\inetsrv 目录下。后来的 IIS 7+ 改用 applicationHost.config 纯 XML 文件。这两个东西的架构差异,就像是拿螺丝刀去拧星形螺丝——工具是新的,接口对不上。所以你想用 IIS 7 的 appcmd.exe 命令行去操作 IIS 6,命令会直接报错“无法识别此版本的 IIS”。
实际工作中最头疼的是远程管理。IIS 6 默认开启的远程管理端口是 8098,走的是加密的 TCP 协议。但新版 IIS 的远程管理走的是 8172 端口加 HTTPS。你拿新版的“IIS 远程管理工具”去连旧服务器,连接超时是常态,偶尔能连上,也会因为证书算法不兼容而罢工。
有个土办法我一直觉得挺实用——用 adsutil.vbs 脚本。这个藏在 C:\Inetpub\AdminScripts 目录下的小工具,是 IIS 6 时代的瑞士军刀。虽然它长得丑,命令行参数也怪,但能直接读写 metabase。比如你要修改默认网站的端口,一行 adsutil.vbs set w3svc/1/ServerPort 8080 就搞定,比打开图形界面快得多。这招对老手来说比任何新工具都顺手。
再说说备份迁移。IIS 6 的 metabase 备份用 iisback.vbs 或者直接在 IIS 管理器里右键“备份/还原配置”。但你要是想把配置迁移到新服务器,那麻烦就大了。我试过用 iisext.vbs 导出配置,再导入到 IIS 8 的机器上——结果一堆扩展名映射全乱套,ISAPI 筛选器路径全失效。最后只能手动重建站点,花了整整一个下午。后来学乖了,直接用 cscript iisext.vbs /export 导出成 XML,再用 PowerShell 脚本解析转换成 applicationHost.config 格式,虽然中间要改不少字段映射,但至少能保住大部分站点设置。
微软官方其实早就放弃了对 IIS 6 的管理兼容性支持。从 Windows Server 2012 开始,IIS 管理器就彻底删掉了对 metabase 的读写能力。你要是非要用新工具管老系统,只能装个 IIS 6 Management Compatibility 功能——但这也是给 IIS 7 和 8 用的,让它们能读取旧配置,并不是让新工具反向去操作 IIS 6 服务器。
所以现实很骨感:想管好 IIS 6,要么乖乖用老版本的 Administration Pack,要么就靠命令行和脚本硬扛。我个人经验是把常用的管理动作写成批处理文件,比如重启站点、切换应用池、查看当前连接数,全部用 cscript 调系统自带的脚本搞定。虽然丑,但稳定,而且不用装任何额外组件。
说到底,IIS 6 的管理兼容性是个伪命题。微软的迭代策略就是逼你升级,而不是让你新旧通吃。你要真在乎兼容性,不如花点时间把老站点迁到 IIS 10 上——反正 Windows Server 2003 早就停止支持了,留着一个漏洞百出的老系统,管理再顺手也是个定时炸弹。








