login register Sysop! about ME  
qrcode
    최초 작성일 :    2007년 12월 12일
  최종 수정일 :    2008년 01월 08일
  작성자 :    songgun
  편집자 :    songgun(송 원석)
  읽음수 :    22,307

강좌 목록으로 돌아가기

필자의 잡담~

(없음)
IIS 7.0 인스퍼레이션 - 15, (Managing Sites with IIS7's WMI Provider 번역 및 주해)

다음은 본 번역 문서의 권한에 관한 제반 사항입니다.
  • 본 번역 문서에 대한 모든 저작권은 마이크로소프트사에 있으며, 단순히 IIS 7.0 을 널리 알리고자 하는 개인적인 취지에 의해 번역되어 제공되는 문서입니다.
  • 마이크로소프트사의 요청이 있는 경우 언제라도 게시가 중단될 수 있습니다.
  • 본문에서 제공하는 번역에는 오역이 포함되어 있을 수 있으며, 주해의 내용도 개인적으로 파악한 것으로 마이크로소프트사는 이 내용에 대해 일체의 보장을 하지 않습니다.
  • 본문의 원문은 IIS 개발팀이 제공하는 Managing Sites with IIS7's WMI Provider 입니다.
서론

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

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

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

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

본문에서는 CIM 스튜디오가 대단히 빈번하게 사용되므로, 만약 여러분들이 CIM 스튜디오에 그다지 익숙하지 않다면 먼저 Get to Know the IIS7 WMI Provider using CIM Studio 문서를 살펴보는 것이 좋습니다. *

* 바로 필자가 본문에 앞서 번역한 문서를 말한다. 반드시 이 문서부터 읽어보고 난 뒤에 본문을 읽어보기 바란다. 그리고, IIS7 에만 국한되지 않은 보편적인 WMI 의 기초에 입문하고자 하는 개발자분들에게도 강력하게 권해드린다. 속된 말로 얘기해서, WMI 는 아직 죽지 않았다!

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


시작하기 전에

IIS7 설치 *

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

WMI 제공자 설치

윈도우 비스타에서는 웹 관리 도구 (롱혼 서버에서는 관리 도구) 하위의 IIS 관리 스크립트 및 도구 구성 요소를 선택하여 IIS7 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 IIS7_WMI_CIMStudioLab 이라고 입력합니다.
그러면, 명령이 정상적으로 실행된 경우, 다음과 같은 결과 메시지가 출력될 것입니다.:

    BACKUP object "IIS7_WMI_CIMStudioLab" added
본문의 모든 작업이 끝나면, 백업을 사용하여 IIS 를 본래의 상태로 복구합니다.

  • 명령 프롬프트를 실행합니다.
  • %windir%\system32\inetsrv\appcmd restore backup IIS7_WMI_CIMStudioLab 이라고 입력합니다.
그러면, 명령이 정상적으로 실행된 경우, 다음과 같은 결과 메시지가 출력될 것입니다.:

    Restored configuration from backup "IIS7_WMI_CIMStudioLab"
* 기본적으로 본문의 원문은 2007 년 4 월 경에 비스타와 2008 베타 3 를 기준으로 작성된 문서이다. 그러나, 번역문은 가장 최신 버전인 RC1 에서 거의 대부분의 테스트를 마친 결과를 반영한 것이다. 결과만 얘기한다면 사소한 몇 가지를 제외하고는 큰 변화는 존재하지 않는다.
** 직접 테스트를 해 본 바에 따르면, 백업을 생성하는 명령은 비스타와 2008 RC1 에서 모두 정상적으로 작동되었으나, 복원 명령어의 경우에는 필자의 비스타 환경에서 오류가 발생하였고, 2008 RC1 에서는 정상적으로 동작하는 것을 확인할 수 있었다. 그리고, 비스타에 SP1 RTM 을 설치하고 나서 다시 테스트를 해보니, 비스타에서도 백업과 복원이 모두 정상적으로 이루어졌다.

다만, 비스타에 SP1 RTM 을 설치하기 전에 미리 만들어 놓았던 백업을, SP1 RTM 을 설치하고 나서 복원해보려고 시도했다가 WAS 서비스와 W3SVC 서비스가 아무리해도 시작되지 않아, 결국 IIS7 을 재설치할 수 밖에 없었다. 물론, 이런 문제들은 단지 필자의 비스타 환경에만 국한된 것일 수도 있겠으나, 일단 인지해두고 있는 것도 나쁘지는 않을 것이다.


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

먼저, 시작 메뉴의 빠른 검색창에 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 클래스를 찾아서 선택합니다. (이 과정에 대한 보다 구체적인 방법은 Get to know the IIS7 WMI provider using CIM Studio 문서를 참고하시기 바랍니다.) 그러면, 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)


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


요약 *

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

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


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})