IIS 에 등록된 FTP, 웹사이트가 아주 많을 때, 모든 사이트의 홈 디렉토리를 스크립트를 사용하여 일괄적으로 변경할 수 있을까요? David Wang 블로그에서 스크립트를 얻었습니다.
[환경]
Windows Server 2003 / IIS6
[시나리오]
그림과 같이 FTP 사이트 2개, 웹사이트 3개를 생성한 후 홈 디렉토리를 아래와 같이 변경하는 과정입니다.
FTP1 : C:\OldInetpub\FTP1 (변경 전) -> C:\NewInetpub\FTP1 (변경 후)
FTP2 : C:\OldInetpub\FTP2 (변경 전) -> C:\NewInetpub\FTP2 (변경 후)
Web1 : C:\OldInetpub\Web1 (변경 전) -> C:\NewInetpub\Web1 (변경 후)
Web2 : C:\OldInetpub\Web2 (변경 전) -> C:\NewInetpub\Web2 (변경 후)
Web3 : C:\OldInetpub\Web3 (변경 전) -> C:\NewInetpub\Web2 (변경 후)
FTP2 : C:\OldInetpub\FTP2 (변경 전) -> C:\NewInetpub\FTP2 (변경 후)
Web1 : C:\OldInetpub\Web1 (변경 전) -> C:\NewInetpub\Web1 (변경 후)
Web2 : C:\OldInetpub\Web2 (변경 전) -> C:\NewInetpub\Web2 (변경 후)
Web3 : C:\OldInetpub\Web3 (변경 전) -> C:\NewInetpub\Web2 (변경 후)
-- IIS_WEB_CHANGE_HOME.BAT 파일 작성
@ECHO OFF
SETLOCAL
SET CMD_ADSUTIL=CSCRIPT %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs
SET PROPERTY=Path
FOR /F "usebackq tokens=*" %%I IN (`%CMD_ADSUTIL% FIND /W3SVC/%PROPERTY%`) DO (
FOR /F "usebackq tokens=1,3,*" %%J IN (`%CMD_ADSUTIL% GET %%I/%PROPERTY%`) DO (
IF /I ?%%J? EQU ?%PROPERTY%? (
CALL :Replace "%%I/%%J" %%L
)
)
)
ENDLOCAL
GOTO :EOF
:Replace
SETLOCAL
SET METABASE_PATH=%1
SET ORIGINAL_VALUE=%2
SET NEW_VALUE=%ORIGINAL_VALUE:OldInetpub=NewInetpub%
SETLOCAL
SET CMD_ADSUTIL=CSCRIPT %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs
SET PROPERTY=Path
FOR /F "usebackq tokens=*" %%I IN (`%CMD_ADSUTIL% FIND /W3SVC/%PROPERTY%`) DO (
FOR /F "usebackq tokens=1,3,*" %%J IN (`%CMD_ADSUTIL% GET %%I/%PROPERTY%`) DO (
IF /I ?%%J? EQU ?%PROPERTY%? (
CALL :Replace "%%I/%%J" %%L
)
)
)
ENDLOCAL
GOTO :EOF
:Replace
SETLOCAL
SET METABASE_PATH=%1
SET ORIGINAL_VALUE=%2
SET NEW_VALUE=%ORIGINAL_VALUE:OldInetpub=NewInetpub%
ECHO [%METABASE_PATH%] %ORIGINAL_VALUE% -^> %NEW_VALUE%
%CMD_ADSUTIL% SET %METABASE_PATH% %NEW_VALUE%
ENDLOCAL
GOTO :EOF
[실행결과]
3개의 웹사이트 모두 홈 디렉토리 Path 정보에 포함된 OldInetpub 가 NetInetpub 로 replace 되어 SET 되었습니다.
FTP 홈 디렉토리도 변경하기 위해서는 스크립트 7줄 W3SVC 부분을 MSFTPSVC 로 변경하면 됩니다.
5개 사이트 모두 홈 디렉토리가 의도대로 변경되었습니다.
[참고자료]
HOWTO: Search and Replace any IIS metabase property value automatically
http://blogs.msdn.com/david.wang/archive/2005/07/08/HOWTO-Search-and-Replace-any-IIS-metabase-property-value-automatically.aspx
작성자 : Lai Go / 작성일자 : 2009.11.26