IIS 7.0의 WMI 공급자를 이용해서 사이트 관리하기

등록일시: 2007-12-17 09:21,  수정일시: 2015-07-25 13:34
조회수: 7,752
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.

서론

본문에서는 IIS 7 WebAdministration 네임스페이스를 사용한 사이트 관리를 살펴보고 WMI에 대한 기본적인 내용들을 소개합니다. 웹 사이트를 생성하고, 삭제하고, 중지하고, 시작하고, 수정하는 방법들을 배워보게 될 것입니다. 그리고, 이런 모든 방법들은 응용 프로그램 풀이나 가상 디렉터리 같은 개체들을 대상으로 동작하도록 손쉽게 변경이 가능합니다.

특정 사이트의 속성이 궁금하십니까? 또는, 사이트를 생성하거나 제거하고 싶으십니까? 아니면, 관리하는 서버에 존재하는 모든 사이트들의 목록을 얻고 싶으십니까? 만약 그렇다면 제대로 찾아오셨습니다. 본문에서는 사이트 관리와 관련된 대부분의 작업들을 살펴보고 그와 동시에 WMI에 대한 기본적인 소개를 제공합니다.

본문에서 살펴볼 내용들은 다음과 같습니다:

  • 특정 사이트의 인스턴스를 얻는 방법 (단일-키 개체)
  • 특정 응용 프로그램의 인스턴스를 얻는 방법 (다중-키 개체)
  • 새로운 사이트를 생성하는 방법
  • 모든 사이트를 열거하는 방법
  • 특정 사이트를 중지하고 시작하는 방법
  • 특정 사이트를 삭제하는 방법

이 작업들 중 대부분이 응용 프로그램 풀 등의 다른 개체들을 대상으로도 유사한 방식으로 동작하므로, 각자 본문을 살펴보고 난 다음 해당 내용들을 응용 프로그램 풀 등의 개체를 생성하거나 삭제하고 수정하는데 적용해 보고 정말로 그런지 직접 확인해보시기 바랍니다.

본문에서는 CIM 스튜디오가 매우 빈번하게 사용되므로, 만약 CIM 스튜디오에 그다지 익숙하지 않다면 먼저 CIM 스튜디오를 사용해서 IIS 7.0 WMI 공급자의 정보 알아내기 문서를 살펴보는 것이 좋습니다. *

* 본문 직전에 번역한 문서를 말하는 것입니다. 반드시 이 문서부터 읽어보고 난 뒤에 본문을 읽어보시기 바랍니다. 그리고, IIS 7뿐만 아니라 보편적인 WMI 기초에 입문하고자 하는 개발자분에게도 강력하게 권해드립니다. 속된 말로 얘기해서, WMI는 아직 죽지 않았습니다!

그러나, 프로그래밍적인 방법으로 IIS 7을 관리하기 위한 최적의 방법은 역시 MWA를 사용하는 방법입니다. 이 주제에 관해서는 제가 번역해서 MSDN에 기고한 Microsoft.Web.Administration.dll 관련 문서를 참고하시기 바랍니다.

시작하기 전에

IIS 7 설치 *

본문에서 제공하는 모든 내용을 따라해보려면 반드시 IIS 7이 설치되어 있어야 합니다. 만약, 웹 브라우저에 http://localhost/라고 입력했을 때, IIS 7의 기본 시작 페이지가 나타난다면 이미 IIS 7이 설치된 것입니다. 만약, IIS 7이 설치되어 있지 않다면 Windows Vista Beta 2에 IIS 7을 설치하는 방법 문서의 지시를 참고하여 IIS 7을 설치하도록 하십시오.

WMI 제공자 설치

윈도우 비스타에서는 웹 관리 도구 (롱혼 서버에서는 관리 도구) 하위의 IIS 관리 스크립트 및 도구 구성 요소를 선택해서 IIS 7 WMI 제공자를 설치할 수 있습니다. 윈도우 비스타에서는 Windows 기능 대화 상자의 인터넷 정보 서비스 하위에서, 롱혼 서버에서는 서버 관리자의 Web Server (IIS) 역할에서 해당 구성 요소를 찾을 수 있습니다.

WMI 도구 설치 (CIM 스튜디오 포함)

본문을 시작하기 전에 마이크로소프트 다운로드 센터에서 WMI 도구를 다운로드 받고 설치합니다.

필수 권한 (사용자 계정 제어 (UAC))

그리고, WebAdministration WMI 네임스페이스에 연결하기 위해서는 반드시 관리자 권한이 필요합니다. 결과적으로 여러분들은:

  1. 롱혼 서버에 내장 관리자 계정으로 로그인하거나, 또는
  2. 관리자 그룹에 속한 계정으로 로그인하고 사용자 계정 제어(UAC)를 비활성화 시키거나, 또는
  3. 관리자 그룹에 속한 계정으로 로그인하고 사용자 계정 제어(UAC)를 활성화 시켜야 합니다.

만약, 여러분들이 1번이나 2번에 속하는 경우라면 본문을 진행해나가는 도중 어떠한 권한 문제도 접하지 않을 것입니다. 그러나, 3번에 해당하는 경우라면 권한 관련 오류를 만나게 될 것입니다. 그런 경우에는 먼저 관리자 권한으로 명령 프롬프트를 실행해서 권한을 상승시키고, 이 명령 프롬프트를 통해서 CIM 스튜디오를 실행하는 방법으로 문제를 해결할 수 있습니다.

명령 프롬프트를 관리자 권한으로 실행시키 위해서는, 시작 메뉴에서 모든 프로그램을 클릭하고 보조프로그램 메뉴에서 명령 프롬프트를 마우스 오른쪽 버튼으로 클릭한 다음, "관리자 권한으로 실행" 메뉴를 선택합니다.

권한이 상승된 명령 프롬프트에서 CIM 스튜디오를 실행시키려면:

  • 명령 프롬프트를 관리자 권한으로 실행합니다.
  • "%systemdrive%\Program Files\WMI Tools\studio.htm"라고 입력합니다.

백업 생성 **

본문의 작업이 모두 끝난 다음, 시스템을 다시 초기 상태로 복원하기 위해서는 핵심 IIS 구성 설정 파일들을 백업해둬야 합니다.

  • 명령 프롬프트를 실행합니다.
  • %windir%\system32\inetsrv\appcmd add backup IIS 7_WMI_CIMStudioLab 이라고 입력합니다.
  • 명령 프롬프트를 실행합니다.
  • %windir%\system32\inetsrv\appcmd add backup IIS 7_WMI_CIMStudioLab 이라고 입력합니다.

그러면, 명령이 정상적으로 실행된 경우, 다음과 같은 결과 메시지가 출력될 것입니다:

BACKUP object "IIS 7_WMI_CIMStudioLab" added

본문의 모든 작업이 끝나면 백업을 사용해서 IIS를 본래의 상태로 복구합니다.

  • 명령 프롬프트를 실행합니다.
  • %windir%\system32\inetsrv\appcmd restore backup IIS 7_WMI_CIMStudioLab 이라고 입력합니다.

그러면, 명령이 정상적으로 실행된 경우 다음과 같은 결과 메시지가 출력될 것입니다:

* 기본적으로 본문의 원문은 2007년 4월 경에 비스타와 2008 베타 3을 기준으로 작성된 문서입니다. 그러나, 번역문은 가장 최신 버전인 RC1에서 거의 대부분의 테스트를 마친 결과를 반영한 것입니다. 결과만 얘기하면 사소한 몇 가지를 제외하고는 큰 변화는 존재하지 않습니다.

** 직접 테스트를 해 본 바에 따르면, 백업을 생성하는 명령은 비스타와 RC1에서 모두 정상적으로 작동되었으나, 복원 명령어의 경우에는 비스타 환경에서 오류가 발생하였고, RC1에서는 정상적으로 동작하는 것을 확인할 수 있었습니다. 그리고, 비스타에 SP1 RTM을 설치하고 나서 다시 테스트를 해보니 비스타에서도 백업과 복원이 모두 정상적으로 이뤄졌습니다.

다만, 비스타에 SP1 RTM을 설치하기 전에 미리 만들어 놓았던 백업을 SP1 RTM을 설치하고 나서 복원해보려고 시도했으나 WAS 서비스와 W3SVC 서비스가 아무리해도 시작되지 않아서 결국 IIS 7을 재설치할 수 밖에 없었습니다. 일단 참고하시기 바랍니다.

사이트의 인스턴스를 얻는 방법

시작 메뉴의 빠른 검색창에 notepad.exe라고 입력한 다음 엔터키를 누릅니다. 그리고, 다음 스크립트 코드를 메모장에 붙여넣습니다:

Set oIIS = GetObject("winmgmts:root\WebAdministration")

메모장의 파일 메뉴에서 "다른 이름으로 저장..." 메뉴를 선택해서 다른 이름으로 저장 대화 상자를 엽니다. 그리고, 대화 상자 하단에 위치한 파일 형식 항목의 값을 "텍스트 문서 (*.txt)"에서 "모든 파일"로 변경한 다음, 현재 파일을 바탕 화면에 GetSite.vbs라는 이름으로 저장합니다.

다시 빠른 검색창에 cmd.exe를 입력하고 엔터키를 눌러서 명령 프롬프트를 실행합니다. 그런 다음, 명령 프롬프트에 cd %SystemDrive%\Users\Administrator\Desktop라고 입력하고 엔터키를 눌러 디렉터리를 이동한 다음, 다시 cscript //h:cscript라고 입력하고 엔터키를 누릅니다. 그러면, 기본 스크립트 호스트 응용 프로그램이 cscript.exe로 설정되는데, 이 결과로 스크립트의 출력이 해당 스크립트가 실행된 명령 프롬프트로 전달됩니다. 이 작업에 대한 보다 구체적인 정보는 Running Scripts from Windows 문서를 참고하십시오. 명령 프롬프트에 GetSite.vbs라고 입력하고 엔터키를 누릅니다. 만약, 스크립트가 별다른 오류를 발생시키지 않았다면 성공적으로 WebAdministration 네임스페이스에 연결된 것입니다. 여기에서 "winmgmts:root\WebAdministration"이라는 문자열이 만들어내는 마법에 대한 보다 자세한 정보는 Constructing a Moniker String 문서를 참고하시기 바랍니다. 그럼, 이번에는 GetSite.vbs 스크립트에 다음과 같은 네 줄의 스크립트를 더 추가해 보도록 하겠습니다. 이 스크립트는 먼저 기본 웹 사이트에 대한 참조를 얻고, 기본 웹 사이트의 두 가지 속성값을 출력하여 모든 작업이 성공했다는 사실을 알려줍니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSite = oIIS.Get("Site.Name='Default Web Site'")

WScript.Echo "Retrieved an instance of Site "
WScript.Echo "    Name: " & oSite.Name
WScript.Echo "    ID:   " & oSite.ID

명령 프롬프트에서 GetSite.vbs 스크립트를 실행합니다. 그러면, 다음과 같은 결과를 얻게 될 것입니다:

Retrieved an instance of Site
    Name: Default Web Site
    ID: 1

이 스크립트 코드에서 Get 메서드가 어떤 방식으로 동작하는지 궁금할 것입니다. 시작 메뉴에서 모든 프로그램을 선택하고, WMI Tools 메뉴에서 WMI CIM Studio 프로그램을 실행합니다. 그리고, CIM 스튜디오에서 WebAdministration 네임스페이스에 연결하고 Site 클래스를 찾아서 선택합니다. (이 과정에 대한 보다 구체적인 방법은 CIM 스튜디오를 사용해서 IIS 7.0 WMI 공급자의 정보 알아내기 문서를 참고하시기 바랍니다.) 그러면, CIM 스튜디오의 오른쪽 패인에 Site 클래스의 속성들이 출력되는데, 그 중 Name 속성을 살펴보면 이름 왼쪽에 다음과 같이 열쇠 아이콘이 존재하는 것을 확인할 수 있습니다.

클래스에는 한 개 이상의 "키" 속성들이 존재할 수 있으며, 이 키들의 집합을 사용하면 유일한 특정 개체를 구분할 수 있습니다. 관련된 보다 복잡하고 난해한 내용들은 Describing an Instance Object Path 문서에서 살펴볼 수도 있지만, 본문에서는 "Site.Name='Default Web Site'"라는 문자열이 뜻하는 바가 "키 속성인 Name 속성의 값이 'Default Web Site'인 사이트 개체의 인스턴스를 리턴하라."라는 의미라는 정도만 이해해도 충분합니다. 지금까지 설명한 내용들을 모두 이해하셨습니까? 그렇다면 이번에는 조금 더 복잡한 내용들에 관해서 살펴보도록 하겠습니다.

응용 프로그램의 인스턴스를 얻는 방법

이번에는 CIM 스튜디오를 열어 Application 클래스를 검색하고 선택합니다. Application 클래스에는 다음 이미지에서 확인할 수 있는 바와 같이 SiteName과 Path라는 두 개의 키 속성이 존재한다는 점에 주목하십시오.

다시 시작 메뉴의 빠른 검색창에 notepad.exe라고 입력한 다음 엔터키를 누릅니다. 그리고, 다음의 스크립트 코드를 메모장에 붙여넣습니다. 스크립트의 두 번째 줄을 살펴보시면 Application 클래스의 두 가지 키 속성을 모두 지정하고 있다는 사실을 확인하실 수 있습니다. 그리고, 이 때 사용되는 문자열의 패턴이 <개체_이름>.<키_속성>='<값>',<키_속성>='<값>' 형식이라는 점에 주의하십시오. 이처럼 각각의 키 속성 및 값은 쉼표를 사용해서 다른 키 속성 및 값과 연결됩니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oApp = oIIS.Get("Application.SiteName='Default Web Site',Path='/'")

WScript.Echo "Successfully retrieved: '" & oApp.SiteName & oApp.Path & "'"

메모장의 파일 메뉴에서 "다른 이름으로 저장..." 메뉴를 선택해서 다른 이름으로 저장 대화 상자를 엽니다. 그리고, 대화 상자 하단에 위치한 파일 형식 항목의 값을 "텍스트 문서 (*.txt)"에서 "모든 파일"로 변경한 다음, 현재 파일을 바탕 화면에 GetApp.vbs라는 이름으로 저장합니다.

다시 시작 메뉴의 빠른 검색창에 cmd.exe라고 입력하고 엔터키를 눌러 명령 프롬프트를 실행합니다.

명령 프롬프트에 cd %SystemDrive%\Users\Administrator\Desktop이라고 입력하고 엔터키를 누릅니다.

마지막으로 GetApp.vbs라고 입력하고 엔터키를 누릅니다. 그러면 다음과 같이 출력될 것입니다:

Successfully retrieved: 'Default Web Site/'

사이트 인스턴스를 생성하는 방법

이미 CIM 스튜디오 관련 문서에서 살펴봤던 메서드 인자 조회 방법을 기억하고 계십니까? 그 방법을 다시 한 번 살펴보도록 하겠습니다. 먼저 CIM 스튜디오에서 Site 클래스를 찾고 선택한 다음, 오른쪽 패인에서 Methods 탭을 클릭합니다.

그리고, Create 메서드 로우를 마우스 오른쪽 버튼으로 클릭하고 "Edit Method Parameters" 메뉴를 선택하면, 다음과 같이 Create 메서드의 인자 정보를 제공하는 대화 상자가 나타납니다. "Cancel" 버튼을 클릭해서 대화 상자를 닫으십시오.

이제 메서드에 전달되는 인자들이 무엇인지 알게 되었으므로 각각의 인자에 대한 변수를 생성해보도록 하겠습니다. 다음의 스크립트 코드를 메모장에 붙여넣으십시오.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
        
' 사이트 바인딩 정보 개체 생성
Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:80:www.newsite.com"
oBinding.Protocol = "http"

' 다음 변수들은 Create 메서드에 인자로 전달된다.
name = "NewSite"
physicalPath = "C:\inetpub\wwwroot"
arrBindings = array(oBinding)

메모장의 파일 메뉴에서 "다른 이름으로 저장..." 메뉴를 선택해서 다른 이름으로 저장 대화 상자를 엽니다. 그리고, 대화 상자 하단에 위치한 파일 형식 항목의 값을 "텍스트 문서 (*.txt)"에서 "모든 파일"로 변경한 다음, 현재 파일을 바탕 화면에 CreateSite.vbs라는 이름으로 저장합니다.

다시 시작 메뉴의 빠른 검색창에 cmd.exe라고 입력하고 엔터키를 눌러 명령 프롬프트를 실행합니다.

명령 프롬프트에 cd %SystemDrive%\Users\Administrator\Desktop이라고 입력하고 엔터키를 누릅니다.

마지막으로 CreateSite.vbs라고 입력하고 엔터키를 누릅니다. 아마도 스크립트는 별다른 오류 없이 잘 실행될 것입니다.

다시 CIM 스튜디오로 돌아가서, Create 메서드의 로우를 마우스 오른쪽 버튼으로 클릭합니다. 그리고, 이번에는 "Method Qualifiers..." 메뉴를 선택합니다. 그러면, 다음과 같은 대화 상자가 나타나고 Create 메서드가 정적 메서드임을 확인할 수 있습니다. "Cancel" 버튼을 클릭해서 대화 상자를 닫습니다.

정적 메서드는 반드시 개체 정의로부터 호출돼야 합니다. 다음 샘플 스크립트는 개체 인스턴스를 얻는 방법과 개체 정의를 얻는 방법간의 차이점을 잘 보여주고 있습니다:

Set oIIS = GetObject("winmgmts:root\WebAdministration")

' 개체 인스턴스를 얻기 위해서는, 개체의 키 속성과 그 값을 WMI 개체 인스턴스 경로에 지정해줘야 한다.
Set oSite = oIIS.Get("Site.Name='Default Web Site'")

' 개체의 정의는 속성 및 값을 지정하지 않고 이름만 지정하면 얻을 수 있다.
Set oSiteDefn = oIIS.Get("Site")

그러면, 사이트를 생성하기 위한 몇 줄의 코드를 CreateSite.vbs 스크립트에 추가해 보도록 하겠습니다:

Set oIIS = GetObject("winmgmts:root\WebAdministration")

' 사이트 바인딩 정보 개체 생성
Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:80:www.newsite.com"
oBinding.Protocol = "http"

' 다음 변수들은 Create 메서드에 인자로 전달된다.
name = "NewSite"
physicalPath = "C:\inetpub\wwwroot"
arrBindings = array(oBinding)

' Site 개체 정의를 얻는다.
Set oSiteDefn = oIIS.Get("Site")

' 사이트 생성!!
oSiteDefn.Create name, arrBindings, physicalPath
WScript.Echo "Site created successfully!"

다시 명령 프롬프트로 돌아와서 CreateSite.vbs를 실행합니다. 그러면, 다음과 같은 출력 결과를 볼 수 있을 것입니다:

Site created successfully!

아마 사이트가 실제로 생성되었다는 증거를 눈으로 직접 확인해보고 싶을 것입니다. 명령 프롬프트에 notepad %windir%\system32\inetsrv\ApplicationHost.config라고 입력합니다. 그리고, 메모장이 실행되면 Ctrl+F 단축키를 사용해서 찾기 대화 상자를 띄웁니다. "찾을 내용:" 입력란에 "NewSite"라고 입력하고 "다음 찾기" 버튼을 클릭합니다. 그러면, 방금 생성한 새로운 사이트가 정의되어 있는 <sites> 구성 설정 섹션으로 이동하게 될 것입니다:

<site name="NewSite" id="2">
  <application path="/">
    <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
  </application>
  <bindings>
    <binding protocol="http" bindingInformation="*:80:www.newsite.com" />
  </bindings>
</site>

개체 생성/삭제/수정에 대한 추가 정보

그러나, WebAdministration 네임스페이스에 존재하는 모든 개체를 생성하거나 삭제할 수 있는 것은 아닙니다. 가령, WorkerProcess 개체나 AppDomain 개체는 서버가 수명을 직접 관리하며 WMI를 사용해서 생성하거나 삭제할 수 없습니다.

특정 개체를 생성할 수 있는지, 삭제할 수 있는지, 또는 수정할 수 있는지 여부를 알아낼 수 있는 보편적인 방법이 궁금하십니까? 그렇다면, 먼저 CIM 스튜디오에서 Site 개체를 선택하십시오. 그리고, Properties 탭의 속성 그리드를 마우스 오른쪽 버튼으로 클릭한 다음, "Object Qualifiers..." 메뉴를 선택하십시오. 그러면, 다음과 같은 대화 상자가 나타날 것입니다.

개체 한정자인 SupportsCreate와 SupportsDelete, 그리고 SupportsUpdate는 각각 개체를 생성할 수 있는지, 삭제할 수 있는지, 또는 수정할 수 있는지를 나타냅니다. 예를 들어서 Site 개체는 생성할 수도 있고, 삭제할 수도 있고, 수정할 수도 있으므로 이 세 가지 한정자가 모두 존재하며 그 값은 true입니다.

이번에는 CIM 스튜디오에서 WorkerProcess 개체를 선택해보겠습니다. 그리고, Properties 탭의 속성 그리드를 마우스 오른쪽 버튼으로 클릭한 다음, "Object Qualifiers..." 메뉴를 선택합니다. 그러면, 다음과 같은 대화 상자가 나타나는데, WorkerProcess 개체에는 앞에서 설명한 세 가지 한정자가 존재하지 않는다는 것을 알 수 있으며 결과적으로 이 한정자들의 값은 기본값인 false로 간주됩니다. (보다 자세한 정보는 Standard Qualifiers 문서를 참고하십시오.) 따라서, WorkerProcess 개체는 생성할 수도, 삭제할 수도, 그리고 수정할 수도 없다는 점을 짐작할 수 있습니다.

모든 사이트를 열거하는 방법

다음 스크립트에서는 Site 개체의 모든 인스턴스를 얻기 위해 InstancesOf 메서드를 사용하고 있습니다. 이 스크립트를 새로운 메모장에 붙여넣고 "EnumSites.vbs"라는 이름으로 저장합니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSites = oIIS.InstancesOf("Site")
For Each oSite In oSites            
     WScript.Echo oSite.Name & " (" & oSite.Id & ")"
Next

그리고, 명령 프롬프트에서 EnumSites.vbs 스크립트를 실행합니다. 그러면, 다음과 같은 출력 결과를 볼 수 있을텐데, 이는 Default Web Site와 본문에서 생성한 사이트의 정보가 함께 출력된 결과입니다.

Default Web Site (1)
NewSite (2)

복잡한 내부정보

아마 여러분은 "InstancesOf 메서드는 어디에서 비롯된 것일까, 그리고 이 메서드에 관한 자세한 정보는 어디에서 얻을 수 있을까?"하는 궁금증을 갖게 되었을 것입니다. 이 스크립트의 첫 번째 줄에 사용된 코드는 본문에서 WebAdministration WMI 네임스페이스에 연결하기 위해 이미 여러 차례 사용되었던 코드입니다:

Set oIIS = GetObject("winmgmts:root\WebAdministration").

이 스크립트 코드에서 GetObject 함수의 호출은 네임스페이스를 대상으로 한 작업을 수행할 때 사용할 수 있는 SWbemServices 개체를 리턴합니다. 그리고, 이 개체는 InstancesOf 메서드를 비롯해 다른 많은 유용한 메서드들을 제공합니다. 만약, InstancesOf 메서드와 기타 다른 메서드들에 관한 보다 상세한 정보를 얻고 싶다면 Platform SDK article on SWbemServices 문서를 참고하십시오.

사이트를 시작하고 중지하는 방법

일단, Site 개체의 상태를 수정해보기에 앞서 Site 개체가 존재할 수 있는 상태에는 어떤 것들이 있는지를 먼저 알아보겠습니다. 다음 스크립트는 WebAdministration 네임스페이스에 연결하고 Site 개체의 인스턴스를 얻은 다음, 해당 인스턴스의 GetState 메서드를 호출합니다. GetState 메서드는 숫자 형식의 상태를 리턴해주므로, 스크립트에 도우미 함수를 하나 추가해서 숫자형 상태를 보다 이해하기 쉬운 문자열로 변환해주는 것이 편리합니다. 이 스크립트를 새로운 메모장에 붙여넣고 GetSiteStatus.vbs라는 이름으로 저장합니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSite = oIIS.Get("Site.Name='NewSite'")
                                                
WScript.Echo GetStateDescription(oSite.GetState)

' -------헬퍼 함수-----------

Function GetStateDescription(statusCode)
    Select Case statusCode
        Case 1
            GetStateDescription = "Started"
        Case 2
            GetStateDescription = "Starting"
        Case 3
            GetStateDescription = "Stopped"
        Case 4
            GetStateDescription = "Stopping"
        Case 5
            GetStateDescription = "Unknown"
        Case Else
            GetStateDescription = "Error: Bad Status"
    End Select
End Function

명령 프롬프트에서 GetSiteStatus.vbs 스크립트를 실행시켜보면 여러분들은 다음과 같은 출력 결과를 볼 수 있을 것입니다:

Started

이 사이트는 현재 실행중이므로 사이트 중지를 위한 스크립트를 추가해보겠습니다. GetSiteStatus.vbs 파일로부터 스크립트 코드를 복사하되, 사이트를 중지시키기 위한 코드를 몇 줄 추가합니다. (새롭게 추가되거나 변경된 코드는 굵은 글씨로 되어 있습니다.) 다음 스크립트를 새로운 메모장에 붙여넣고 StopSite.vbs라는 이름으로 저장합니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSite = oIIS.Get("Site.Name='NewSite'")
                        
WScript.Echo oSite.Name & " is " & GetStateDescription(oSite.GetState)
oSite.Stop
WScript.Echo oSite.Name & " is " & GetStateDescription(oSite.GetState)
 
' -------헬퍼 함수-----------

Function GetStateDescription(statusCode)
    Select Case statusCode
        Case 1
            GetStateDescription = "Started"
        Case 2
            GetStateDescription = "Starting"
        Case 3
            GetStateDescription = "Stopped"
        Case 4
            GetStateDescription = "Stopping"
        Case 5
            GetStateDescription = "Unknown"
        Case Else
            GetStateDescription = "Error: Bad Status"
    End Select
End Function

명령 프롬프트에서 StopSite.vbs 스크립트를 실행시켜보면, 다음과 같은 출력 결과를 얻을 수 있을 것입니다:

NewSite is Started
NewSite is Stopped

만족스러운 결과입니다. 그러면, 이번에는 반대로 사이트를 다시 시작시켜보겠습니다. StopSite.vbs 스크립트를 StartSite.vbs라는 이름으로 복사합니다. 그리고, StartSite.vbs 스크립트를 메모장으로 열고 oSite.Stop이라는 코드를 oSite.Start로 수정합니다. StartSite.vbs 스크립트를 실행시켜보면, 다음과 같은 출력 결과를 얻을 수 있을 것입니다:

NewSite is Stopped
NewSite is Started

사이트를 삭제하는 방법

본문에서 작성했던 EnumSites.vbs 스크립트를 다시 한 번 실행시켜 보겠습니다. 그러면, 다음과 같은 출력 결과를 볼 수 있을 텐데, 이 결과는 서버에 두 개의 사이트가 존재한다는 것을 의미합니다:

Default Web Site (1)
NewSite (2)

다음 스크립트는 WebAdministration 네임스페이스에 연결하고 NewSite 사이트의 Site 개체 인스턴스를 얻은 다음, 개체를 삭제합니다. 이 스크립트를 새로운 메모장에 붙여넣고 DeleteSite.vbs 라는 이름으로 저장합니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSite = oIIS.Get("Site.Name='NewSite'")

oSite.Delete_

그리고, 명령 프롬프트에서 DeleteSite.vbs 스크립트를 실행합니다.

다시 EnumSites.vbs 스크립트를 실행해서 NewSite 사이트가 정상적으로 삭제되었는지 확인해봅니다. 현재 서버에는 Default Web Site만 남아있으므로 다음과 같은 출력 결과를 확인할 수 있을 것입니다.

Default Web Site (1)

축하합니다. 드디어 본문의 모든 과정을 마쳤습니다!

요약 *

본문에서는 특정 사이트나 응용 프로그램의 인스턴스를 얻는 방법, 사이트를 생성하는 방법, 사이트의 목록을 얻는 방법, 사이트를 시작시키거나 중지시키는 방법, 그리고 마지막으로 사이트를 삭제하는 방법을 살펴봤습니다. 이 방법들은 동일 네임스페이스의 다른 개체에도 대부분 적용 가능합니다. 가령, 응용 프로그램 개체와 응용 프로그램 풀 개체 역시 사이트와 동일한 방법으로 생성하거나 삭제할 수 있습니다.

* 다음 번역 문서들에서 바로 이러한 내용들을 다루고 있습니다. 내용의 난이도가 크게 높지 않으므로 본문을 읽어본 분들은 대부분 수월하게 이해하실 수 있을 것으로 생각됩니다.