在IIS7或IIS7.5中appcmd命令导入导出站点与应用程序池

发布时间:2020-06-25编辑:脚本学堂
本文介绍了在在IIS7或IIS7。5中使用appcmd命令导入导出站点与应用程序池的方法,iis7中网站与应用程序池配置可以用appcmd命令直接导入导出,对于站点转移来说很是方便,感兴趣的朋友参考下。

为实现负载平衡,可能会使用多个WEB服务器,也就会需要给多个IIS配置同样的站点和应用程序池,那么需要一个一个的重新建吗?
当然不用了,只需要一些简单的命令即可在在IIS7(Windows Server 2008)或IIS7。5(Windows Server 2008 R2)上来导出导入这些配置了。
 
当在IIS7或IIS7。5上创建站点时,IIS会为我们自动创建一个对应该站点的唯一的应用程序池。
所以,要导入网站信息,必须先导入应用程序池信息,这点要注意哦。
 
在IIS7+上导出所有应用程序池的方法:
 

复制代码 代码示例:
%windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml

这个命令会将服务器上全部的应用程序池都导出来,不需要的可以删除掉。比如:
DefaultAppPool
Classic.Net AppPool
如果在导入时发现同名的应用程序池已经存在,那么导入就会失败。
 
导入应用程序池的方法:
 

复制代码 代码示例:
%windir%/system32/inetsrv/appcmd add apppool /in < c:/apppools.xml

这样就可以将全部的应用程序池都导入到另一个服务器中了。
 
导出全部站点的方法:
 

复制代码 代码示例:
 %windir%/system32/inetsrv/appcmd list site /config /xml > c:/sites.xml

同样,需要编辑sites.xml文件删除不需要的站点。如:
Default Website
 
导入站点的方法:
 

复制代码 代码示例:
 %windir%/system32/inetsrv/appcmd add site /in < c:/sites.xml

至此,导入工作完成了,看看两台服务器的IIS配置一样了吧。
 
另外,介绍下单独导出导入一个站点的方法
导出单独应用程序池:
 

复制代码 代码示例:
%windir%/system32/inetsrv/appcmd list apppool “应用程序池名称” /config /xml > c:/myapppool.xml

黄色字体的就是要导出的应用程序池名称
 
导入单独应用程序池:
 

复制代码 代码示例:
%windir%/system32/inetsrv/appcmd add apppool /in < c:/myapppool.xml

导出单独站点:
 

复制代码 代码示例:
%windir%/system32/inetsrv/appcmd list site “站点名称” /config /xml > c:/mywebsite.xml
 

黄色字体的就是要导出的站点名称
 
导入单独站点:
 

复制代码 代码示例:
%windir%/system32/inetsrv/appcmd add site /in < c:/mywebsite.xml

注意,在导入站点时,如果是新建站点,记得修改这里:
 

复制代码 代码示例:
<SITE SITE.NAME="t.xxx.cn" SITE.ID="19" bindings="http/*:80:t.xxx.cn" state="Started">
        <site name="t.xxx.cn" id="19" serverAutoStart="true">

看明白了吗?就是id号如果重复的话,会提示冲突,在当前iis中的最大站点id上加1,然后导入就没有问题了。
 
参考: http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/