Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



iis7.0管理命令(appcmd) (copy)

废话不说!虽然有配置界面管理器!但是做安装包的时候命令创建是必不可少的!最近使用NSIS制作安装包仔细研究了一下Appcmd的命令,可谓是功能齐全.

上网查了些资料,那些博客大部分都是转载的别人的。都是些基本的介绍,很多命令都没介绍到(不知道是不是我走眼了)。

就连微软的 技术资源库 也不详细:

附地址:http://technet.microsoft.com/zh-cn/library/cc772200(WS.10).aspx(反正我找了一遍!没找到我要的)

 

微软的 技术资源库 有的我就不介绍了,点开上面的链接自己去看。

(介绍我们能用到的一些命令,目前只包含site 的操作,其他apppool config app vdir 后续有时间在加入)


 

一:准备工作

APPcmd.exe 位于 C:\Windows\System32\inetsrv 目录

使用 Cd c:\Windows\System32\inetsrv 切换到该目录


 

二:命令操作简介

IIS 命令行管理工具基本格式:

APPCMD (命令) (对象类型) <标识符> </参数1:值1 ...>

支持的对象类型:

SITE      虚拟站点的管理
APP       管理应用程序
VDIR      管理虚拟目录
APPPOOL   管理应用程序池
CONFIG    管理常规配置节
WP        管理工作进程
REQUEST   管理 HTTP 请求
MODULE    管理服务器模块
BACKUP    管理服务器配置备份
TRACE     使用失败请求跟踪日志

 -----------这个就不解释很详细了,懂的人都知道这个IIS的层次。

 


 

三:对Site命令详解

  1.命令介绍

虚拟站点的管理

APPCMD <命令> SITE [标识符] [-参数1:值1 ...]    如: appcmd list site (列出当前存在的站点)

支持的命令:

list      列出虚拟站点
set       配置虚拟站点
add       添加新虚拟站点
delete    删除虚拟站点
start     启动虚拟站点
stop      停止虚拟站点

  2.详解

列出虚拟站点

APPCMD list SITE [标识符] [-参数1:值1 ...]

列出计算机上的虚拟站点。此命令可用于使用特定站点的标识符或 url 查找该站点,或者
基于指定的站点属性匹配零个或多个站点。

示例:

 appcmd list sites

    列出计算机上的所有站点。

 appcmd list site "Default Web Site"

    查找站点“Default Web Site”。

 appcmd list site http://localhost/app1

    查找与指定的 url 关联的站点。

 appcmd list site /serverAutoStart:false

    查找“serverAutoStart”配置属性设置为“false”的所有站点。

添加新虚拟站点

APPCMD add SITE [标识符] [-参数1:值1 ...]

使用指定的设置创建新的虚拟站点。至少,必须提供站点名称和 ID。

支持的参数:

 /name (必需) 站点名称

 /id 站点 ID

 /bindings “http://domain:port,...”好记格式或“protocol/bindingInformation,...”原始格式的绑定列表

 /physicalPath

如果指定,将导致为该站点创建包含指向指定路径的根虚拟目录的根应用程序。如果忽
略,将创建一个没有根应用程序的站点,并且该站点在创建根应用程序之前将无法启动。


示例:

 appcmd add site /name:"My New Site" /id:2 /bindings:http://www.domain.com:80

    使用指定的好记绑定创建一个新站点“我的新站点”,以便在端口 80 上侦听对 www.d
omain.com 的 http 请求。

 appcmd add site /name:"My New Site" /id:2 /bindings:http://*:81

    使用指定的好记绑定创建一个新站点“我的新站点”,以便在端口 81 上侦听对任何域
名的 http 请求。

 appcmd add site /name:"My New Site" /id:2 /bindings:http/*:81:

    使用指定的 ID 和绑定创建新站点“我的新站点”。创建后,新站点中不包含任何应用
程序。

 appcmd add site /name:"My New Site" /id:2 /bindings:http/*:81: /physicalPath:"c
:\inetpub\mynewsite"

    使用指定的 ID 和绑定创建新站点“我的新站点”。系统将自动创建根虚拟目录指向指
定物理路径的根应用程序。

 appcmd add site /name:"My New Site" /bindings:http/*:81:

    使用绑定创建新站点“我的新站点”,并自动生成站点 ID。创建后,该新站点不包含
任何应用程序。

 

配置虚拟站点

APPCMD set SITE [标识符] [-参数1:值1 ...]

允许设置指定虚拟站点的属性。必须提供准确的站点标识符,并且必须将该标识符解析为现
有站点。

支持的参数:

 identifier (必需)

    要修改的站点的站点名称或 url

 /site.name

    要修改的站点的站点名称或 url (与标识符相同)

 /bindings

    “http://domain:port,...”好记格式或“protocol/bindingInformation,...”原始
格式的绑定列表


示例:

 appcmd set site "Default Web Site" /serverAutoStart:false /id:100

    设置“Default Web Site”站点的“serverAutoStart”和“id”属性。

这里对  set 操作附加一些高级操作(重要)

当时用 appcmd set site "Default Web Site"  当时用后其他高级参数

解释后续补上............

-name 名称
-id ID标识
-serverAutoStart 是否自动启动
-bindings.[protocol='string',bindingInformation='string'].p
-bindings.[protocol='string',bindingInformation='string'].b
-limits.maxBandwidth
-limits.maxConnections
-limits.connectionTimeout
-logFile.logExtFileFlags
-logFile.customLogPluginClsid
-logFile.logFormat
-logFile.directory
-logFile.period
-logFile.truncateSize
-logFile.localTimeRollover
-logFile.enabled
-traceFailedRequestsLogging.enabled
-traceFailedRequestsLogging.directory
-traceFailedRequestsLogging.maxLogFiles
-traceFailedRequestsLogging.maxLogFileSizeKB
-traceFailedRequestsLogging.customActionsEnabled
-applicationDefaults.path
-applicationDefaults.applicationPool
-applicationDefaults.enabledProtocols
-virtualDirectoryDefaults.path
-virtualDirectoryDefaults.physicalPath 网站的物理路径
-virtualDirectoryDefaults.userName  物理路径凭据的账户
-virtualDirectoryDefaults.password  物理路径凭据的密码
-virtualDirectoryDefaults.logonMethod
-virtualDirectoryDefaults.allowSubDirConfig
-[path='string'].path
-[path='string'].applicationPool
-[path='string'].enabledProtocols
-[path='string'].virtualDirectoryDefaults.path
-[path='string'].virtualDirectoryDefaults.physicalPath
-[path='string'].virtualDirectoryDefaults.userName
-[path='string'].virtualDirectoryDefaults.password
-[path='string'].virtualDirectoryDefaults.logonMethod
-[path='string'].virtualDirectoryDefaults.allowSubDirConfig
-[path='string'].[path='string'].path
-[path='string'].[path='string'].physicalPath
-[path='string'].[path='string'].userName
-[path='string'].[path='string'].password
-[path='string'].[path='string'].logonMethod
-[path='string'].[path='string'].allowSubDirConfig
 

删除虚拟站点

APPCMD delete SITE [标识符] [-参数1:值1 ...]

描叙: 从计算机删除指定的虚拟站点。必须提供准确的站点标识符,并且必须将该标识符解析为现有站点。

支持的参数:

 identifier    (必需)要删除的站点的站点名称或 url

 /site.name   要删除的站点的站点名称或 url (与标识符相同)


示例:

 appcmd delete site "Default Web Site"           删除站点“Default Web Site”。

 

启动虚拟站点

APPCMD start SITE [标识符] [-参数1:值1 ...]

启动指定的虚拟站点并启用该站点,以开始侦听其所有绑定端点上的新请求。必须提供准确的站点标识符,并且必须将该标识符解析为现有站点。

支持的参数:

 identifier    (必需)要启动的站点的站点名称或 url

 /site.name    要启动的站点的站点名称或 url (与标识符相同)


示例:

 appcmd start site "Default Web Site"

    启动站点“Default Web Site”。

 

停止虚拟站点

APPCMD stop SITE [标识符] [-参数1:值1 ...]

停止指定的虚拟站点,阻止在其绑定端点上接收新请求。必须提供准确的站点标识符,并且
必须将该标识符解析为现有站点。

支持的参数:

 identifier    (必需)要停止的站点的站点名称或 url

 /site.name    要停止的站点的站点名称或 url (与标识符相同)


示例:

 appcmd stop site "Default Web Site"

    停止站点“Default Web Site”。

 

----------------------------------------------------------------

 

IIS 7 提供了一个新的命令行工具 Appcmd.exe,可以使用该工具来配置和查询 Web 服务器上的对象,并以文本或 XML 格式返回输出。 下面是一些可以使用 Appcmd.exe 完成的任务的示例:
•创建和配置站点、应用程序、应用程序池和虚拟目录。

•停止和启动站点。

•启动、停止和回收应用程序池。

•查看有关在 Web 服务器上运行的工作进程和请求的信息。

Appcmd.exe 为常见的查询和配置任务提供了一致的命令,从而降低了学习语法的复杂性。 例如,您可以使用 list 命令来搜索有关对象(如应用程序)的信息,也可以使用 add 命令来创建对象(如站点)。
另外,您还可以将命令组合在一起使用,以返回与 Web 服务器上对象相关的更为复杂的数据,或执行更为复杂的任务。 例如,您可以完成类似如下任务的复杂任务:停止所有具有运行时间超过六十秒的请求的站点。

AppCmd.exe工具所在目录 C:\windows\sytstem32\inetsrv\目录下

使用命令行管理IIS 7.0时,需要使用IIS7.0提供的全新管理工具AppCmd.exe。AppCmd.exe工具可以完成web服务器的全不管理工作。利用AppCmd.exe工具,既可以通过命令行提示完成挂历工作,也可以通过脚本完成管理工作。利用AppCmd.exe工具,可以完成以下工作:

1、添加、删除、修改web网站和应用程序池

2、停止,启动web网站和应用程序池

3、观察工作进程和请求信息

4、一列表形式显示IIS和ASP.NET的配置信息,并支持对IIS和ASP.NET的配置信息进行修改

AppCmd.exe工具提供了一个一直的命令集,利用该命令集,针对受支持的对象类型,可以执行查询操作并完成一些其他任务,既可以段杜运行这些命令,也可以讲命令进行组合并欲行命令组合,从而可以执行复杂的任务,完成复杂的查询工作,如表:

对象名称 描述
site 管理虚拟网站
app 管理应用程序
vdir 管理虚拟目录
appool 管理应用程序池
config 挂历通用配置文件
wp 挂历工作进程
request 管理http请求
module 管理服务器模块
backup 管理服务器配置备份
trace 管理失效请求跟踪日志

AppCmd.exe工具支持的命令:

add

clear

configure

delete

inspect

install

list

lock

migrate

recycle

reset

restore

search

set

start

stop

uninstall

unlock

AppCmd命令

温馨提示:命令总是位于对象之前,而属性总是位于对象之后,这样就可以通过创建一个类似于一条语句的结构,在这个结构中,appcmd.exe通知对象做某事。

  list      列出应用程序池
  set       配置应用程序池
  add       添加新应用程序池
  delete    删除应用程序池
  start     启动应用程序池
  stop      停止应用程序池
  recycle   回收应用程序池

1、列出一个对象所有实例

appcmd.exe list app

2、列出独一无二的对象实例

appcmd.exe list app "Default Web Site/"

3、列出满足一定准则的对象实例

appcmd.exe list app /apppool.name:"defaultapppool"

4、列出对象的详细信息

appcmd.exe list app "default web site/"/text:*

5.列出所有XXX应用程序池的应用程序

appcmd.exe list app /text:/apppool.name:XXX

6、列出网站的配置信息

appcmd.exe list site "default web site "/config

7、更换应用程序池

appcmd.exe set app "default web site/"     /applicationpool:"XXX" 

8、添加新的应用程序池

appcmd.exe add apppool /name:"XXX"

9、删除应用程序池

appcmd.exe delete apppool /apppool.name:"XXX" 

10、列出所有的应用程序池的详细信息

appcmd.exe list apppool

11、查询所有应用程序池状态为started的

appcmd.exe list apppools /state:started

12、关闭指定应用程序池

appcmd.exe stop appPool /appPool.name:"XXX"

13、开启指定应用程序池

appcmd.exe start apppool /apppool.name:"XXX"

14、监视当前的请求

appcmd.exe list request

request对象可以使用属性来找到特定的信息,通过使用属性,可以返回摸个运行时间(以毫秒计算)超过预设值的网站、应用程序池、工作进程、URL,            以及请求的信息。request对象所使用的属性包括:

基于网站ID的请求

appcmd.exe list request /site.id:1

基于应用程序池的请求

appcmd.exe list request /apppool.exe:DefaultAppPool

基于工作进程的请求

appcmd.exe list request /wp.name:"1044"

基于网站名称的请求

appcmd.exe list request /site.name:"Default web Site"

基于进程运行时间的请求

appcmd.exe list request /elapsed:"1000"

15.站点备份与恢复

备份站点:

appcmd.exe add backup backupname

列出备份:

appcmd.exe list backup

恢复备份

在恢复一个备份时,IIS停止运行,并且重写服务器的状态。一旦配置文件被重写,IIS随即重新启动。如果不希望IIS停止运行并重新启动,那么可以是使用/stop:false。这样,就可以在合适的时间手动停止IIS运行,并手动重新启动IIS

appcmd.exe restore backup  /back.name:"XXX" /stop:false

appcmd.exe  restore backup /backup.name:"XXX"

删除备份

appcmd.exe relete backup  XXX

16、列出服务器的整体配置信息

appcmd.exe list config

列出默认Web网站的配置

appcmd.exe list config "Default Web Site/"

当需要显示默认web网站的配置内容时,为了减少显示内容,可以执行

appcmd.exe list config "Defaul Web Site/"  /section:system.net/settings

获取所有可用节点

appcmd.exe list config -section:?

17、编辑配置节点信息

eg1: 启用全局IPv6

appcmd.exe set config  /section:system.net/settings -ipv6.enabled:"true"

eg2:在全局配置中启用了IPv6,现在要在默认的web中引用IPv6

appcmd.exe set config  "http://localhost" /section:system.net/settings -ipv6.enabe:"false"

列出节点集合

appcmd.exe list config /section:httpErrors

编辑节点集合

eg:把401错误页面有"401。htm"修改为"defaulterror.htm"

通过使用加号(+)或者一个减号(-)添加 活删除元素

删除503状态码

appcmd.exe set config /section:httpErrors /-[statusCode='503']

appcmd.exe set config /section:httpErrors / [statusCode='401'].path:defaulterror.htm

18、对配置进行加锁和解锁

解锁:

appcmd.exe unlock config "default web site" /section:system.web/authentication

加锁:

appcmd.exe lock config "default web site" /section:system.web/authentication

19、使用管道传送XML数据

可以在appcmd list 中使用/xml修饰符来创建复杂的任务,还可以执行大规模的批处理工作。利用/xml修饰符,可以讲一个查询的结果导出并保存到一个标准XML格式的文件中,从而使其他命令行工具或者shell命令可以使用这个XML文件。例如,为了列出所有已启用的应用程序池,并将信息保存到一个标准的XML文件中,执行以下命令:

appcmd.exe list apppool /state:started /xml

 

 

----------------------------------------------------------

IIS7的配置文件有好几个,在c:\windows\system32\inetsrv\config文件夹下,如果需要手动去备份,只要复制一份config这个目录既可以。

同时,iis7也可通过appcmd命令来管理备份,如:
c:\windows\system32\inetsrv\AppCmd.exe LIST SITE /config /XML > iisappcmdexport.xml
这样,就可以把配置文件导出到C:\Users\Administrator\iisappcmdexport.xml (假设用户为Administrator)。

其它的命令如下:


1. 备份
%windir%\system32\inetsrv\appcmd.exe add backup "My Backup Name"


2.还原

%windir%\system32\inetsrv\appcmd.exe restore backup "My Backup Name"


3.删除备份

%windir%\system32\inetsrv\appcmd.exe delete backup "My Backup Name"


4.查看备份

%windir%\system32\inetsrv\appcmd.exe list backup


如果要批量搬移IIS上的数据到其他的服务器,需要导出所有应用池和网站:
1. 导出应用池

%windir%\system32\inetsrv\AppCmd.exe LIST APPPOOL /config /XML > poolappcmdexport.xml


2. 导出网站配置

%windir%\system32\inetsrv\AppCmd.exe LIST SITE /config /XML > iisappcmdexport.xml


3.导入应用池

%windir%\system32\inetsrv\AppCmd.exe ADD APPPOOL /IN < poolappcmdexport.xml


4. 导入网站配置

%windir%\system32\inetsrv\AppCmd.exe ADD SITE /IN < iisappcmdexport.xml

 

浏览1079  评论0  Alex于 2015-12-23 20:27
发言