AppCmd.exe工具所在目录 C:\windows\sytstem32\inetsrv\目录下
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"的配置属性
站点的备份与恢复
还原命名也可以写成 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. 导出应用池
1
|
%windir%\system32\inetsrv\AppCmd.exe LIST APPPOOL XXX
/config
/XML
> apppool.xml
|
2. 导出网站配置
1
|
%windir%\system32\inetsrv\AppCmd.exe LIST SITE XXX
/config
/XML
>site.xml
|
3.导入应用池
1
|
%windir%\system32\inetsrv\AppCmd.exe ADD APPPOOL
/IN
<apppool.xml
|
4. 导入网站配置
1
|
%windir%\system32\inetsrv\AppCmd.exe ADD SITE
/IN
< site.xml
|
XXX为站点名或者应用池名。如果XXX不填写,会把所有的站点或应用池全部导出来。
下面来测试下:
首先我们把站点和应用池的配置文件先导出来
然后删除站点和应用池(有条件可以迁移到另外一台机器上测试)
然后我们在把配置文件导出进去看看站点是否还原
然后我们看下站点是否还原,并测试下是否和原来一样
和原来站点一样,而且不会覆盖原来存在的站点。
在这里有一点一定要强调一下。在从其他IIS服务器导出站点时必须更改ID,如何导入的站点自带的ID已经在服务器上存在,会导入失败并报错。
使用appcmd建立虚拟站点
appcmd.exe add SITE [标识符] [-参数1:值1 ...]
使用指定的设置创建新的虚拟站点。至少,必须提供站点名称和 ID。ID不能重复
支持的参数:
/name (必需) 站点名称
/id 站点 ID
/bindings 绑定列表 “http://domain:port,...”好记格式或“protocol/bindingInformation,...”
/physicalPath 如果指定,将导致为该站点创建包含指向指定路径的根虚拟目录的根应用程序。如果忽略,将创建一个没有根应用程序的站点,并且该站点在创建根应用程序之前将无法启动。
例子:
1
2
|
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
如何要额外添加绑定列表
1
|
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上
1
|
appcmd
set
site
/site
.name:test1 /[path=
'/'
].applicationPool:test1
|
这样站点就能正常访问,如果需要配置其他的参数,可以参考下文。
配置虚拟站点
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
要修改的应用程序池的应用程序池名称(与标识符相同)
/?
显示可针对应用程序池对象设置的动态属性
示例:
1
|
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