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

iis7 appcmd的基础命令及简单用法_IIS

appcmd语法:

appcmd.exe <命令> <对象类型> <标示符> <参数1:值1 ....>

常用命令

命令    举例描述                  例子
list列出应用程序池例:appcmd.exe list app
set配置应用程序池

例:appcmd.exe set app "default site" /applicationpool:"X"

add 添加新应用程序池例:appcmd.exe add apppool /name:"XXX"
delete删除应用程序池例:appcmd.exe delete apppool /apppool.name:"XXX" 
start启动应用程序池例:appcmd.exe start apppool /apppool.name:"XXX"
stop停止应用程序池例:appcmd.exe stop apppool /apppool.name:"XXX"
recycle回收应用程序池例:appcmd.exe recycle apppool xxx

常用对象

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

常用参数

/? 显示上下文相关帮助消息
/text<:value>

以文本格式(默认)生成输出。

/text:* 在详细信息视图中显示所有对象属性

/text:<attribute>显示每个对象的指定特性的值

/xml以XML格式生成输出,使用此参数生成的输出可发送至以/in模式运行的其他命令
/in or -自标准输入读取和操作XML输入。使用此参数可操作运行于/XML模式的其他命令生成的输入
/comfig<:*>

显示所显示的对象配置。/config:*还包括继承的配置。

/metadata在显示配置时显示配置的元数据
/commit

设置用于保存配置更改的配置路径。

可以指定具体的配置路径、"site"、"app"、"parent"或"url"

以保存到该命令正在编辑的路径的适当部分

也可以设置为对应的配置级别的"apphost"、"webroot"或"machine"

/debug显示命令执行的调式信息

可以使用"!"转译常用参数同名的参数

例:"/!debug:value"   设置一个名为"debug"的配置属性


站点的备份与恢复

iis7 appcmd的基础命令及简单用法_IIS_02

还原命名也可以写成 appcmd.exe restore backup test1 /stop:false(恢复备份时不会重启IIS)

特别提醒:通过backup实现的备份是全站点的配置文件的备份,不会备份站点代码。

使用restore恢复备份的时候会覆盖所有站点,即使刚添加的站点也会覆盖没的。恢复备份时先备份好!


单个站点迁移

有的时候我们要迁移单个站点怎么操作呢?

那我们就要使用到参数/XML /IN

官方链接:http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

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

1. 导出应用池

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

2. 导出网站配置

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

3.导入应用池

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

4. 导入网站配置

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

XXX为站点名或者应用池名。如果XXX不填写,会把所有的站点或应用池全部导出来。

下面来测试下:

首先我们把站点和应用池的配置文件先导出来

iis7 appcmd的基础命令及简单用法_IIS_03

然后删除站点和应用池(有条件可以迁移到另外一台机器上测试)

iis7 appcmd的基础命令及简单用法_IIS_04

然后我们在把配置文件导出进去看看站点是否还原

iis7 appcmd的基础命令及简单用法_appcmd_05

然后我们看下站点是否还原,并测试下是否和原来一样

iis7 appcmd的基础命令及简单用法_IIS_06

和原来站点一样,而且不会覆盖原来存在的站点。

在这里有一点一定要强调一下。在从其他IIS服务器导出站点时必须更改ID,如何导入的站点自带的ID已经在服务器上存在,会导入失败并报错。


使用appcmd建立虚拟站点

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

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

支持的参数:

/name (必需) 站点名称

/id 站点 ID

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

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

iis7 appcmd的基础命令及简单用法_appcmd_07


例子:

appcmd add site /name:"test1" /id:3 /bindings:http://192.168.125.142:82 /physicalPath:"
e:\test1"

使用指定路径绑定创建一个新站点“test1”,以便在端口 80 上侦听对 www.domain.com 的 http 请求。ID为3,虚拟目录:e:\test1

如何要额外添加绑定列表

appcmd set site /site.name:test1 /+bindings.[protocol='https',bindingInformation='*:80:']

站点建好了还要建立相应的应用池

appcmd add apppool /name:test1 /managedRuntimeVersion:v2.0 /managedPipelineMode:Classic 

/managedRuntimeVersion  是.net Framework的版本 如:v1.0 v1.1或v2.0等

/managedPielineMode  托管管道模式:Classic经典模式,Integrated集成模式

把应用池test1绑定到站点test1上

appcmd set site /site.name:test1 /[path='/'].applicationPool:test1

iis7 appcmd的基础命令及简单用法_appcmd_08

这样站点就能正常访问,如果需要配置其他的参数,可以参考下文。


配置虚拟站点

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

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

支持的参数:

identifier (必需)       要修改的站点的站点名称或 url

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

/bindings               绑定列表

其他参数

-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 set apppool [标识符] [-参数1:值1 ...]

允许对指定的应用程序池设置属性。必须提供准确的应用程序池标识符,并且该标识符必须能够解析为现有应用程序池。
支持的参数:
 identifier (必需)
    要修改的应用程序池的应用程序池名称
 /apppool.name
    要修改的应用程序池的应用程序池名称(与标识符相同)
 /?
    显示可针对应用程序池对象设置的动态属性
示例:

 appcmd set apppool "DefaultAppPool" /autoStart:false

    设置应用程序池“DefaultAppPool”的“autoStart”属性。

其他参数

-queueLength
-autoStart
-enable32BitAppOnWin64
-managedRuntimeVersion
-managedRuntimeLoader
-enableConfigurationOverride
-managedPipelineMode
-CLRConfigFile
-passAnonymousToken
-startMode
-processModel.identityType
-processModel.userName
-processModel.password
-processModel.loadUserProfile
-processModel.setProfileEnvironment
-processModel.logonType
-processModel.manualGroupMembership
-processModel.idleTimeout
-processModel.maxProcesses
-processModel.shutdownTimeLimit
-processModel.startupTimeLimit
-processModel.pingingEnabled
-processModel.pingInterval
-processModel.pingResponseTime
-recycling.disallowOverlappingRotation
-recycling.disallowRotationOnConfigChange
-recycling.logEventOnRecycle
-recycling.periodicRestart.memory
-recycling.periodicRestart.privateMemory
-recycling.periodicRestart.requests
-recycling.periodicRestart.time
-recycling.periodicRestart.schedule.[value='timespan'].value
-failure.loadBalancerCapabilities
-failure.orphanWorkerProcess
-failure.orphanActionExe
-failure.orphanActionParams
-failure.rapidFailProtection
-failure.rapidFailProtectionInterval
-failure.rapidFailProtectionMaxCrashes
-failure.autoShutdownExe
-failure.autoShutdownParams
-cpu.limit
-cpu.action
-cpu.resetInterval
-cpu.smpAffinitized
-cpu.smpProcessorAffinityMask
-cpu.smpProcessorAffinityMas