

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. 导出应用池
2. 导出网站配置
3.导入应用池
4. 导入网站配置
XXX为站点名或者应用池名。如果XXX不填写,会把所有的站点或应用池全部导出来。
下面来测试下:
首先我们把站点和应用池的配置文件先导出来
然后删除站点和应用池(有条件可以迁移到另外一台机器上测试)
然后我们在把配置文件导出进去看看站点是否还原
然后我们看下站点是否还原,并测试下是否和原来一样
和原来站点一样,而且不会覆盖原来存在的站点。
在这里有一点一定要强调一下。在从其他IIS服务器导出站点时必须更改ID,如何导入的站点自带的ID已经在服务器上存在,会导入失败并报错。
使用appcmd建立虚拟站点
appcmd.exe add SITE [标识符] [-参数1:值1 ...]
使用指定的设置创建新的虚拟站点。至少,必须提供站点名称和 ID。ID不能重复
支持的参数:
/name (必需) 站点名称
/id 站点 ID
/bindings 绑定列表 “http://domain:port,...”好记格式或“protocol/bindingInformation,...”
/physicalPath 如果指定,将导致为该站点创建包含指向指定路径的根虚拟目录的根应用程序。如果忽略,将创建一个没有根应用程序的站点,并且该站点在创建根应用程序之前将无法启动。
例子:
使用指定路径绑定创建一个新站点“test1”,以便在端口 80 上侦听对 www.domain.com 的 http 请求。ID为3,虚拟目录:e:\test1
如何要额外添加绑定列表
站点建好了还要建立相应的应用池
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 [标识符] [-参数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
含义如下:
以下是每个参数的含义和用途的详细说明:
站点配置参数
-
-serverAutoStart:-
含义:设置站点是否自动启动。
-
用途:如果设置为
true,IIS启动时会自动启动该站点。
-
-
-bindings.[protocol='string',bindingInformation='string'].protocol:-
含义:设置站点的绑定协议(如
http或https)。 -
用途:指定站点使用的协议类型。
-
-
-bindings.[protocol='string',bindingInformation='string'].bindingInformation:-
含义:设置站点的绑定信息。
-
用途:格式为
IP地址:端口:主机名,例如*:80:www.example.com。
-
-
-limits.maxBandwidth:-
含义:设置站点的最大带宽限制。
-
用途:单位为字节/秒。
-
-
-limits.maxConnections:-
含义:设置站点的最大连接数。
-
用途:限制同时连接到站点的客户端数量。
-
-
-limits.connectionTimeout:-
含义:设置站点的连接超时时间。
-
用途:单位为秒。
-
日志配置参数
-
-logFile.logExtFileFlags:-
含义:设置日志文件的扩展标志。
-
用途:例如,记录日期、时间、客户端IP等。
-
-
-logFile.customLogPluginClsid:-
含义:设置自定义日志插件的CLSID。
-
用途:用于扩展日志功能。
-
-
-logFile.logFormat:-
含义:设置日志文件的格式。
-
用途:例如,
W3C、IIS或NCSA。
-
-
-logFile.directory:-
含义:设置日志文件的存储目录。
-
用途:指定日志文件的路径。
-
-
-logFile.period:-
含义:设置日志文件的滚动周期。
-
用途:例如,
Daily、Weekly或Monthly。
-
-
-logFile.truncateSize:-
含义:设置日志文件的截断大小。
-
用途:单位为字节。
-
-
-logFile.localTimeRollover:-
含义:设置日志文件是否使用本地时间滚动。
-
用途:如果设置为
true,日志文件将根据本地时间滚动。
-
-
-logFile.enabled:-
含义:设置是否启用日志记录。
-
用途:如果设置为
true,站点将记录日志。
-
失败请求跟踪配置参数
-
-traceFailedRequestsLogging.enabled:-
含义:设置是否启用失败请求跟踪。
-
用途:如果设置为
true,站点将记录失败请求。
-
-
-traceFailedRequestsLogging.directory:-
含义:设置失败请求跟踪日志的存储目录。
-
用途:指定日志文件的路径。
-
-
-traceFailedRequestsLogging.maxLogFiles:-
含义:设置失败请求跟踪日志的最大文件数。
-
用途:限制日志文件的数量。
-
-
-traceFailedRequestsLogging.maxLogFileSizeKB:-
含义:设置失败请求跟踪日志的最大文件大小。
-
用途:单位为KB。
-
-
-traceFailedRequestsLogging.customActionsEnabled:-
含义:设置是否启用自定义操作。
-
用途:如果设置为
true,可以自定义失败请求的处理逻辑。
-
应用程序默认配置参数
-
-applicationDefaults.path:-
含义:设置应用程序的默认路径。
-
用途:指定应用程序的根路径。
-
-
-applicationDefaults.applicationPool:-
含义:设置应用程序的默认应用程序池。
-
用途:指定应用程序池的名称。
-
-
-applicationDefaults.enabledProtocols:-
含义:设置应用程序的默认启用协议。
-
用途:例如,
http或https。
-
虚拟目录默认配置参数
-
-virtualDirectoryDefaults.path:-
含义:设置虚拟目录的默认路径。
-
用途:指定虚拟目录的根路径。
-
-
-virtualDirectoryDefaults.physicalPath:-
含义:设置虚拟目录的默认物理路径。
-
用途:指定虚拟目录的文件系统路径。
-
-
-virtualDirectoryDefaults.userName:-
含义:设置虚拟目录的默认用户名。
-
用途:指定访问虚拟目录的用户名。
-
-
-virtualDirectoryDefaults.password:-
含义:设置虚拟目录的默认密码。
-
用途:指定访问虚拟目录的密码。
-
-
-virtualDirectoryDefaults.logonMethod:-
含义:设置虚拟目录的默认登录方法。
-
用途:例如,
ClearText或Network。
-
-
-virtualDirectoryDefaults.allowSubDirConfig:-
含义:设置是否允许子目录配置。
-
用途:如果设置为
true,子目录可以覆盖父目录的配置。
-
路径相关配置参数
-
-[path='string'].path:-
含义:设置特定路径的路径。
-
用途:指定路径的相对路径。
-
-
-[path='string'].applicationPool:-
含义:设置特定路径的应用程序池。
-
用途:指定应用程序池的名称。
-
-
-[path='string'].enabledProtocols:-
含义:设置特定路径的启用协议。
-
用途:例如,
http或https。
-
-
-[path='string'].virtualDirectoryDefaults.path:-
含义:设置特定路径的虚拟目录默认路径。
-
用途:指定虚拟目录的根路径。
-
-
-[path='string'].virtualDirectoryDefaults.physicalPath:-
含义:设置特定路径的虚拟目录默认物理路径。
-
用途:指定虚拟目录的文件系统路径。
-
-
-[path='string'].virtualDirectoryDefaults.userName:-
含义:设置特定路径的虚拟目录默认用户名。
-
用途:指定访问虚拟目录的用户名。
-
-
-[path='string'].virtualDirectoryDefaults.password:-
含义:设置特定路径的虚拟目录默认密码。
-
用途:指定访问虚拟目录的密码。
-
-
-[path='string'].virtualDirectoryDefaults.logonMethod:-
含义:设置特定路径的虚拟目录默认登录方法。
-
用途:例如,
ClearText或Network。
-
-
-[path='string'].virtualDirectoryDefaults.allowSubDirConfig:-
含义:设置特定路径的虚拟目录是否允许子目录配置。
-
用途:如果设置为
true,子目录可以覆盖父目录的配置。
-
-
-[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:-
含义:设置嵌套路径的登录方法。
-
用途:例如,
ClearText或Network。
-
-
-[path='string'].[path='string'].allowSubDirConfig:-
含义:设置嵌套路径是否允许子目录配置。
-
用途:如果设置为
true,子目录可以覆盖父目录的配置。
-
总结
这些参数用于配置IIS站点的行为,包括绑定、日志、失败请求跟踪、应用程序和虚拟目录的默认设置等。根据实际需求,可以灵活调整这些参数以优化站点的性能和功能。
配置虚拟应用池
APPCMD set apppool [标识符] [-参数1:值1 ...]
允许对指定的应用程序池设置属性。必须提供准确的应用程序池标识符,并且该标识符必须能够解析为现有应用程序池。
支持的参数:
identifier (必需)
要修改的应用程序池的应用程序池名称
/apppool.name
要修改的应用程序池的应用程序池名称(与标识符相同)
/?
显示可针对应用程序池对象设置的动态属性
示例:
设置应用程序池“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
含义如下:
应用程序池配置参数
-
-queueLength:-
含义:设置应用程序池请求队列的最大长度。
-
用途:当请求队列超过此值时,新请求将被拒绝。
-
-
-autoStart:-
含义:设置应用程序池是否自动启动。
-
用途:如果设置为
true,IIS启动时会自动启动该应用程序池。
-
-
-enable32BitAppOnWin64:-
含义:在64位系统上启用32位应用程序支持。
-
用途:如果设置为
true,应用程序池将以32位模式运行。
-
-
-managedRuntimeVersion:-
含义:指定应用程序池使用的 .NET 运行时版本。
-
用途:例如,
v4.0表示使用 .NET Framework 4.0。
-
-
-managedRuntimeLoader:-
含义:指定托管运行时加载器。
-
用途:通常用于自定义运行时加载器。
-
-
-enableConfigurationOverride:-
含义:启用配置覆盖。
-
用途:允许子目录覆盖父目录的配置。
-
-
-managedPipelineMode:-
含义:指定托管管道模式。
-
用途:可选值为
Integrated(集成模式)或Classic(经典模式)。
-
-
-CLRConfigFile:-
含义:指定CLR配置文件的路径。
-
用途:用于自定义CLR的配置。
-
-
-passAnonymousToken:-
含义:设置是否传递匿名令牌。
-
用途:如果设置为
true,匿名用户令牌将传递给应用程序。
-
-
-startMode:-
含义:设置应用程序池的启动模式。
-
用途:可选值为
AlwaysRunning(始终运行)或OnDemand(按需启动)。
-
进程模型参数
-
-processModel.identityType:-
含义:设置应用程序池的标识类型。
-
用途:可选值为
LocalSystem、LocalService、NetworkService、SpecificUser或ApplicationPoolIdentity。
-
-
-processModel.userName:-
含义:设置自定义账户的用户名。
-
用途:当
identityType为SpecificUser时使用。
-
-
-processModel.password:-
含义:设置自定义账户的密码。
-
用途:当
identityType为SpecificUser时使用。
-
-
-processModel.loadUserProfile:-
含义:设置是否加载用户配置文件。
-
用途:如果设置为
true,将加载用户配置文件。
-
-
-processModel.setProfileEnvironment:-
含义:设置是否加载用户环境变量。
-
用途:如果设置为
true,将加载用户环境变量。
-
-
-processModel.logonType:-
含义:设置登录类型。
-
用途:可选值为
LogonBatch、LogonService或LogonInteractive。
-
-
-processModel.manualGroupMembership:-
含义:设置是否手动管理用户组。
-
用途:如果设置为
true,用户组将不会自动继承。
-
-
-processModel.idleTimeout:-
含义:设置应用程序池的空闲超时时间。
-
用途:超过此时间后,空闲的工作进程将被关闭。
-
-
-processModel.maxProcesses:-
含义:设置应用程序池的最大工作进程数。
-
用途:用于配置Web Garden(多个工作进程)。
-
-
-processModel.shutdownTimeLimit:-
含义:设置应用程序池的关闭时间限制。
-
用途:超过此时间后,工作进程将被强制关闭。
-
-
-processModel.startupTimeLimit:-
含义:设置应用程序池的启动时间限制。
-
用途:超过此时间后,启动失败。
-
-
-processModel.pingingEnabled:-
含义:设置是否启用Ping功能。
-
用途:如果设置为
true,IIS将定期Ping工作进程以检查其状态。
-
-
-processModel.pingInterval:-
含义:设置Ping的时间间隔。
-
用途:单位为秒。
-
-
-processModel.pingResponseTime:-
含义:设置Ping的响应时间限制。
-
用途:超过此时间后,工作进程将被回收。
-
回收参数
-
-recycling.disallowOverlappingRotation:-
含义:设置是否禁止重叠回收。
-
用途:如果设置为
true,新工作进程启动前,旧工作进程必须完全关闭。
-
-
-recycling.disallowRotationOnConfigChange:-
含义:设置是否禁止在配置更改时回收。
-
用途:如果设置为
true,配置更改不会触发回收。
-
-
-recycling.logEventOnRecycle:-
含义:设置回收时是否记录事件日志。
-
用途:可选值为
Time、Requests、Memory等。
-
-
-recycling.periodicRestart.memory:-
含义:设置基于内存的定期回收阈值。
-
用途:单位为MB。
-
-
-recycling.periodicRestart.privateMemory:-
含义:设置基于私有内存的定期回收阈值。
-
用途:单位为MB。
-
-
-recycling.periodicRestart.requests:-
含义:设置基于请求数的定期回收阈值。
-
用途:单位为请求数。
-
-
-recycling.periodicRestart.time:-
含义:设置基于时间的定期回收间隔。
-
用途:单位为分钟。
-
-
-recycling.periodicRestart.schedule.[value='timespan'].value:-
含义:设置基于计划的定期回收时间。
-
用途:例如,每天凌晨2点回收。
-
故障参数
-
-failure.loadBalancerCapabilities:-
含义:设置负载均衡器功能。
-
用途:例如,
HttpLevel或TcpLevel。
-
-
-failure.orphanWorkerProcess:-
含义:设置是否启用孤立工作进程。
-
用途:如果设置为
true,故障进程将被孤立。
-
-
-failure.orphanActionExe:-
含义:设置孤立进程的操作程序。
-
用途:指定可执行文件的路径。
-
-
-failure.orphanActionParams:-
含义:设置孤立进程的操作参数。
-
用途:传递给可执行文件的参数。
-
-
-failure.rapidFailProtection:-
含义:设置是否启用快速失败保护。
-
用途:如果设置为
true,频繁崩溃的应用程序池将被禁用。
-
-
-failure.rapidFailProtectionInterval:-
含义:设置快速失败保护的时间间隔。
-
用途:单位为分钟。
-
-
-failure.rapidFailProtectionMaxCrashes:-
含义:设置快速失败保护的最大崩溃次数。
-
用途:超过此次数后,应用程序池将被禁用。
-
-
-failure.autoShutdownExe:-
含义:设置自动关闭的可执行文件。
-
用途:指定可执行文件的路径。
-
-
-failure.autoShutdownParams:-
含义:设置自动关闭的参数。
-
用途:传递给可执行文件的参数。
-
CPU参数
-
-cpu.limit:-
含义:设置CPU使用率限制。
-
用途:单位为百分比。
-
-
-cpu.action:-
含义:设置CPU使用率超限时的操作。
-
用途:可选值为
NoAction、KillW3wp或Throttle。
-
-
-cpu.resetInterval:-
含义:设置CPU使用率重置间隔。
-
用途:单位为分钟。
-
-
-cpu.smpAffinitized:-
含义:设置是否启用CPU亲和性。
-
用途:如果设置为
true,工作进程将绑定到特定的CPU核心。
-
-
-cpu.smpProcessorAffinityMask:-
含义:设置CPU亲和性掩码。
-
用途:指定工作进程可以使用的CPU核心。
-
-
-cpu.smpProcessorAffinityMask2:-
含义:设置CPU亲和性掩码(64位系统)。
-
用途:指定工作进程可以使用的CPU核心。
-
总结
这些参数用于配置IIS应用程序池的行为,包括进程模型、回收策略、故障处理和CPU限制等。根据实际需求,可以灵活调整这些参数以优化应用程序池的性能和稳定性。











文章评论 本文章有个评论