天天看點

IIS中應用程式池和站點通過指令啟停方法

最近在做災備項目中,需要通過腳本方式對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