2007~2011/IIS2009. 11. 26. 16:05

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 (변경 후)


-- 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%

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

Posted by Lai Go