IIS7 Appcmd 命令详解 (有更改)
废话不说!虽然有配置界面管理器!但是做安装包的时候命令创建是必不可少的!最近使用NSIS制作安装包仔细研究了一下Appcmd的命令,可谓是功能齐全.
上网查了些资料,那些博客大部分都是转载的别人的。都是些基本的介绍,很多命令都没介绍到(不知道是不是我走眼了)。
就连微软的 技术资源库 也不详细:
附地址:Appcmd.exe (IIS 7) | Microsoft Docs(反正我找了一遍!没找到我要的)
微软的 技术资源库 有的我就不介绍了,点开上面的链接自己去看。
(介绍我们能用到的一些命令,目前只包含site 的操作,其他apppool config app vdir 后续有时间在加入)
一:准备工作
APPcmd.exe 位于 C:\Windows\System32\inetsrv 目录
使用 Cd c:\Windows\System32\inetsrv 切换到该目录
或 cd %windir%\system32\inetsrv
二:命令操作简介
IIS 命令行管理工具基本格式:
APPCMD (命令) (对象类型) <标识符> </参数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"的配置属性
三:对Site的命令详解
1.命令介绍
虚拟站点的管理
APPCMD <命令> SITE [标识符] [-参数1:值1 ...] 如: appcmd list site (列出当前存在的站点)
支持的命令:
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 |
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”。
1 添加应用程序进城池
appcmd.exe add apppool /name:test.com /managedRuntimeVersion:"v4.0" /managedPipelineMode:"Integrated"
2 添加站点,指定站点名,绑定,物理路径
appcmd.exe add site /name:"test.com" /id:1 /bindings:http/*:81: /physicalpath:"E:\webroot\test.com\Web"
3 指定站点的进城池
appcmd.exe set site /site.name:"test.com" /[path='/'].applicationPool:test.com
4 指定站点的默认文档为index.aspx
appcmd.exe set config "test.com/" /section:defaultDocument /+files.[@start,value='index.aspx'] /commit:"test.com"
5 把特定目录的脚本执行权限关闭
appcmd set config "test.com/Download" /section:handlers /accessPolicy:Read
6导出一个机器上的所有应用进程池
%windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml
7 导出1个机器上的所有站点
%windir%/system32/inetsrv/appcmd list site /config /xml > c:/sites.xml
8 导入所有进程池
%windir%/system32/inetsrv/appcmd add apppool /in < c:/apppools.xml
9 导入所有站点
%windir%/system32/inetsrv/appcmd add site /in < c:/sites.xml
以下是批处理脚本
10 给站点文件授权
ICACLS e:\webroot\test.com\ /inheritance:e /grant:R "IIS AppPool\test.com":R
ICACLS e:\webroot\test.com\* /inheritance:e /grant:R "IIS AppPool\test.com":R
ICACLS e:\webroot\test.com\download /grant:M "IIS AppPool\test.com":R
ICACLS e:\webroot\test.com\download\* /grant:M "IIS AppPool\test.com":R
******************************************************* set Sitename=test.com set SitePath=E:\webroot\test.com set LogPath=G:\logfile set defaultDocument='index.aspx' set Is32BitApp =False set BackPort=99 set netversion=v4.0 set Cache=Cache %windir%\system32\inetsrv\Appcmd add apppool /name:%Sitename% /managedRuntimeVersion:%netversion% /managedPipelineMode:"Integrated" /enable32BitAppOnWin64:False %windir%\system32\inetsrv\Appcmd add site /name:"%Sitename%" /id:100 /bindings:http/*:%BackPort%:,http/*:80:%sitename% /physicalpath:%SitePath% /logfile.directory:%LogPath% %windir%\system32\inetsrv\Appcmd set site /site.name:"%Sitename%" /[path='/'].applicationPool:%Sitename% %windir%\system32\inetsrv\Appcmd set config "%Sitename%/" /section:defaultDocument /+files.[@start,value=%defaultDocument%] /commit:"%Sitename%" ICACLS %SitePath% /inheritance:e /grant:R "IIS AppPool\%SiteName%":R ICACLS %SitePath%\* /inheritance:e /grant:R "IIS AppPool\%SiteName%":R ICACLS %SitePath%\%Cache% /inheritance:e /grant:R "IIS AppPool\%SiteName%":R ICACLS %SitePath%\%Cache% /inheritance:e /grant:R "IIS AppPool\%SiteName%":R 水域 2017-04-04 14:44:51 set Sitename=test.com set SitePath=E:\webroot\test.com set LogPath=G:\logfile set defaultDocument='index.aspx' set Is32BitApp =False set BackPort=99 set netversion=v4.0 set Cache=Cache %windir%\system32\inetsrv\Appcmd add apppool /name:%Sitename% /managedRuntimeVersion:%netversion% /managedPipelineMode:"Integrated" /enable32BitAppOnWin64:False %windir%\system32\inetsrv\Appcmd add site /name:"%Sitename%" /id:100 /bindings:http/*:%BackPort%:,http/*:80:%sitename% /physicalpath:%SitePath% /logfile.directory:%LogPath% %windir%\system32\inetsrv\Appcmd set site /site.name:"%Sitename%" /[path='/'].applicationPool:%Sitename% %windir%\system32\inetsrv\Appcmd set config "%Sitename%/" /section:defaultDocument /+files.[@start,value=%defaultDocument%] /commit:"%Sitename%" ICACLS %SitePath% /inheritance:e /grant:R "IIS AppPool\%SiteName%":R ICACLS %SitePath%\* /inheritance:e /grant:R "IIS AppPool\%SiteName%":R ICACLS %SitePath%\%Cache% /inheritance:e /grant:R "IIS AppPool\%SiteName%":R ICACLS %SitePath%\%Cache% /inheritance:e /grant:R "IIS AppPool\%SiteName%":R