最近在做灾备项目中,需要通过脚本方式对IIS服务中的应用程序池和站点,进行启动、停止操作,下面记录命令的使用方法
使用C:\Windows\System32\inetsrv\appcmd.exe 命令来实现IIS的应用程序池和站点的操作,具体使用方法可参考帮助命令appcmd /?
1. 站点命令
1.1 查看站点
C:\Windows\System32\inetsrv>appcmd.exe list site
SITE "cbgl" (id:4,bindings:http/*:8900:,state:Started)
SITE "crmwebservice" (id:3,bindings:http/*:8015:,state:Started)
SITE "ERP25" (id:2,bindings:http/*:80:,state:Started)
SITE "LdapWebService" (id:5,bindings:http/*:9111:,state:Started)
SITE "RTS报表" (id:6,bindings:http/*:9333:,state:Started)
SITE "报表服务" (id:7,bindings:http/*:8013:,state:Started)
SITE "手机报表" (id:8,bindings:http/*:8009:,state:Started)
1.2 停止站点
停止ERP25这个站点
C:\Windows\System32\inetsrv>appcmd.exe stop site "ERP25"
“ERP25”已成功停止
1.3 启动站点
启动ERP25这个站点
C:\Windows\System32\inetsrv>appcmd.exe start site "ERP25"
“ERP25”已成功启动。
2. 应用程序池命令
2.1 查看应用程序池
C:\Windows\System32\inetsrv>appcmd.exe list apppool
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "ERP25" (MgdVersion:v2.0,MgdMode:Classic,state:Started)
APPPOOL "RTS报表" (MgdVersion:v2.0,MgdMode:Classic,state:Started)
APPPOOL "手机报表" (MgdVersion:v2.0,MgdMode:Classic,state:Started)
APPPOOL "ASP.NET 1.1" (MgdVersion:v1.1,MgdMode:Classic,state:Started)
APPPOOL "报表服务" (MgdVersion:v2.0,MgdMode:Classic,state:Started)
APPPOOL "cbgl" (MgdVersion:v1.1,MgdMode:Classic,state:Started)
2.2 停止应用程序池
停止ERP25这个应用程序池
C:\Windows\System32\inetsrv>appcmd.exe stop apppool "ERP25"
“ERP25”已成功停止
2.3 启动应用程序池
启动ERP25这个应用程序池
C:\Windows\System32\inetsrv>appcmd.exe start apppool "ERP25"
“ERP25”已成功启动。
3. 检查站点启动状态的批处理
在要检查IIS的站点的Windows主机上,建立一个批处理脚本 IIS_site_started_check.bat ,这里是放在了 C:\ldits\scripts 目录中。
内容如下:
@echo off
rem 将批处理文件默认为管理员权限打开
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
rem cd %~dp0 跳转到当前bat文件路径
cd /d "%~dp0"
:loop
rem 要检查的站点是Started状态的写入一个文本
C:\Windows\System32\inetsrv\appcmd.exe list site <nul | find "ERP25" | find "Started" >> C:\ldits\scripts\my_site_check.txt
C:\Windows\System32\inetsrv\appcmd.exe list site <nul | find "RTS报表" | find "Started" >> C:\ldits\scripts\my_site_check.txt
C:\Windows\System32\inetsrv\appcmd.exe list site <nul | find "报表服务" | find "Started" >> C:\ldits\scripts\my_site_check.txt
C:\Windows\System32\inetsrv\appcmd.exe list site <nul | find "手机报表" | find "Started" >> C:\ldits\scripts\my_site_check.txt
rem 输出文本
for /f "delims=" %%b in (C:\ldits\scripts\my_site_check.txt) do (echo %%b)
rem 统计文本中的行数
SETLOCAL ENABLEDELAYEDEXPANSION
SET lines2=0
FOR /F "tokens=* delims=" %%i IN (C:\ldits\scripts\my_site_check.txt) DO (
SET /A lines2=!lines2!+1
)
echo Started site count: %lines2%
rem 文本中的行数是否是4,也就是要检查这4个站点是否都是已启动状态,echo结果
if %lines2% EQU 4 (echo OK, 应用及服务站点都已启动) else (echo ERROR, 有应用及服务站点未启动,请检查)
rem 删除文本
del C:\ldits\scripts\my_site_check.txt
pause