优秀的编程知识分享平台

网站首页 > 技术文章 正文

IIS中应用程序池和站点通过命令启停方法

nanyue 2024-08-22 17:35:47 技术文章 7 ℃

最近在做灾备项目中,需要通过脚本方式对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
最近发表
标签列表