다음을 통해 공유


IIS 7.0의 WMI 공급자를 사용하여 사이트 관리

작성자: Saad Ladki

소개

이 문서에서는 IIS Web관리istration 네임스페이스를 사용하여 사이트 관리를 안내하여 WMI를 소개합니다. 애플리케이션 풀 및 가상 디렉터리와 같은 개체로 쉽게 변환할 수 있는 모든 작업인 사이트를 만들고, 삭제하고, 중지하고, 시작하고, 수정하는 방법을 알아봅니다.

특정 사이트의 속성을 보거나 사이트를 만들거나 삭제하거나 서버의 모든 사이트를 확인하려는 경우 올바른 위치에 왔습니다. 이 문서에서는 사이트와 관련된 대부분의 작업을 안내하고 WMI에 대한 기본 소개를 제공합니다.

이 문서의 작업 및 섹션은 다음과 같습니다.

이러한 작업의 대부분은 ApplicationPool과 같은 다른 개체에 대해 비슷한 방식으로 수행됩니다. 이 문서의 끝부분에 설명된 내용을 사용하여 ApplicationPool 개체를 만들고 삭제하고 수정할 수 있는지 확인합니다.

이 문서에서는 CIM Studio를 광범위하게 사용합니다. 아직 익숙하지 않은 경우 CIM Studio를 참조하세요.

시작하기 전에

IIS 설치

이 문서의 단계를 완료하려면 IIS 7.0 이상을 설치해야 합니다. 표준 IIS "Under Construction" 페이지를 찾아 http://localhost/ 서 받을 수 있으면 IIS가 컴퓨터에 설치됩니다. IIS가 설치되지 않은 경우 설치 지침은 Windows Vista에 IIS 설치를 참조하세요.

WMI 공급자 설치

관리 도구(또는 웹 관리 도구)에서 IIS 관리 스크립트 및 도구 구성 요소를 선택하여 IIS WMI 공급자를 설치합니다. Windows Vista에서는 인터넷 정보 서비스 아래의 Windows 기능 대화 상자에 있습니다. Windows Server® 2008에서는 웹 서버(IIS) 역할의 서버 관리자 있습니다.

WMI 도구 설치(CIM Studio 포함)

WMI 도구 모음을 설치합니다.

필수 권한 및 UAC(사용자 계정 컨트롤)

Web관리istration WMI 네임스페이스에 연결하려면 관리자여야 합니다. 즉, 다음 중 하나로 로그인됩니다.

  • Windows Server 2008의 기본 제공 관리istrator 계정
  • 관리사용자 그룹의 구성원이며 UAC(사용자 계정 컨트롤)를 사용하지 않도록 설정했거나
  • 관리istrators 그룹 및 UAC의 멤버를 사용할 수 있습니다.

첫 번째 또는 두 번째 상황에 있는 경우 이 문서에 사용 권한 문제가 발생하지 않습니다.

세 번째 상황인 경우 액세스 거부 오류가 발생합니다. 항상 명령 프롬프트를 관리istrator로 열고 관리자 권한 명령 프롬프트에서 CIM Studio를 시작하여 이러한 문제를 방지합니다.

명령 프롬프트를 관리이스트레이터로 열려면 시작을 클릭하고 모든 프로그램을 클릭한 다음 보조 프로그램을 클릭하고 명령 프롬프트를 마우스 오른쪽 단추로 클릭한 다음 관리로 실행을 선택합니다.

관리자 권한 명령 프롬프트에서 CIM Studio를 시작하려면 다음을 수행합니다.

  1. 관리자 권한으로 명령 프롬프트를 엽니다.
  2. Enter 키를 입력 %systemdrive%\Program Files\WMI Tools\studio.htm 하고 누릅니다.

백업 만들기

시작한 후 시스템을 원래 상태로 복원할 수 있도록 시작하기 전에 키 IIS 구성 파일을 백업합니다.

  1. 명령 프롬프트가 엽니다.
  2. %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"

1. 사이트 인스턴스 가져오기

사이트 인스턴스를 얻으려면 시작을 클릭하고 검색 시작 상자를 클릭하고 notepad.exe 입력한 다음 Enter 키를 누릅니. 다음 스크립트 줄을 메모장에 붙여넣습니다.

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

파일, 다른 이름으로 저장...을 클릭하여 저장 대화 상자를 엽니다. 대화 상자 아래쪽에 있는 텍스트 상자 형식으로 저장을 찾고 해당 값을 "텍스트 문서(*.txt)"에서 "모든 파일"로 변경합니다. 바탕 화면에 파일을 "GetSite.vbs"로 저장합니다.

파일 형식을 모든 파일로 변경하는 다른 이름으로 저장 대화 상자의 스크린샷.

시작을 클릭하고 검색 시작 상자를 클릭하고 cmd.exe 입력한 다음 Enter 키를 누릅니. cd %SystemDrive%\Users\관리istrator\Desktop을 입력한 다음 Enter 키를 누릅니. cscript //h:cscript를 입력하고 Enter 키를 누릅니다. 그러면 기본 스크립트 호스트가 시작된 명령 창으로 출력을 보내는 cscript.exe 설정됩니다. 자세한 내용은 Windows에서 스크립트 실행을 참조하세요.

GetSite.vbs를 입력하고 Enter 키를 누릅니. 스크립트가 오류 없이 실행되는 경우 "Web관리istration" 네임스페이스에 성공적으로 연결되었음을 의미합니다. "winmgmts:root\Web관리istration" 문자열에 대한 자세한 내용은 모니커 문자열 생성을 참조하세요. GetSite.vbs 스크립트에 4개의 줄을 더 추가합니다. 이러한 4줄의 스크립트는 기본 웹 사이트를 받은 다음 두 개의 속성을 인쇄하여 성공을 확인합니다.

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

cmd 프롬프트로 돌아가서 GetSite.vbs를 실행합니다. 다음과 같은 출력이 표시됩니다.

사이트 인스턴스를 검색했습니다.

이름: 기본 웹 사이트

ID: 1

"Get"의 작동 방식을 확인하려면 시작, 모든 프로그램, WMI 도구 및 마지막으로 WMI CIM Studio를 클릭합니다. 웹관리영구 네임스페이스로 커넥트(CIM Studio를 사용하여 IIS WMI 공급자 알아보기 참조) 사이트 클래스를 검색합니다. CIM Studio의 오른쪽 창에는 사이트 속성이 표시됩니다. Name 속성은 아래 빨간색 원으로 표시된 키 아이콘 옆에 있습니다.

W M IC I M Studio 대화 상자에서 강조 표시되고 키 속성으로 설정된 Name 속성의 스크린샷

클래스에는 하나 이상의 "키" 속성이 있을 수 있습니다. 이 하나 이상의 키 집합은 개체를 고유하게 식별합니다. 자세한 내용은 인스턴스 개체 경로를 설명하는 내용을 읽어보세요. 실제로 "Site.Name='Default Web Site'" 문자열은 "키 속성 이름이 '기본 웹 사이트'와 같은 사이트 개체의 인스턴스 가져오기"라고 말합니다. 이것이 합리적이라면 좀 더 어려운 것을 시도하십시오.

2. 애플리케이션 인스턴스 가져오기

애플리케이션 인스턴스를 얻으려면 CIM Studio를 열고 애플리케이션 클래스를 검색합니다. 애플리케이션 클래스에는 아래 스크린샷과 같이 "SiteName" 및 "Path"의 두 가지 주요 속성이 있습니다.

W M IC I M Studio 대화 상자에서 경로 및 사이트 이름으로 설정된 애플리케이션 키 속성의 스크린샷

시작을 클릭하고 검색 시작 상자를 클릭하고 notepad.exe 입력한 다음 Enter 키를 누릅니. 다음 스크립트 줄을 메모장에 붙여넣습니다. 스크립트의 두 번째 줄은 두 애플리케이션 키 속성에 대한 값을 지정합니다. 이 문자열의 형식은 <object_name>.<>key_property='<value>',<key_property>='<value>'입니다. 여기서 키 속성과 해당 값은 쉼표로 구분됩니다.

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 입력한 다음 Enter 키를 누릅니.

cd %SystemDrive%\Users\관리istrator\Desktop을 입력한 다음 Enter 키를 누릅니.

GetApp.vbs를 입력하고 Enter 키를 누릅니. 다음 출력이 표시됩니다.

검색 성공: '기본 웹 사이트/'

3. 사이트 인스턴스 만들기

사이트 인스턴스를 만들려면 CIM Studio 문서에서 메서드 매개 변수를 다시 봅니다. CIM Studio에서 사이트 클래스를 검색합니다. 오른쪽 창에서 메서드 탭을 선택합니다.

W M IC I M Studio 대화 상자의 사이트 메서드 탭 스크린샷

Create 메서드를 마우스 오른쪽 단추로 클릭하고 메서드 매개 변수 편집을 선택합니다. Create 메서드에 대한 매개 변수를 보여 주는 아래 대화 상자가 표시됩니다. 취소를 클릭합니다.

이름, 형식 및 값을 포함한 메서드 매개 변수 만들기의 스크린샷.

이제 이 메서드가 사용하는 매개 변수를 알고 있으므로 다음 스크립트 줄을 메모장에 붙여넣어 이러한 매개 변수에 대한 변수를 만듭니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
        
' Create a binding for the site
Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:80:www.newsite.com"
oBinding.Protocol = "http"

' These are the parameters we pass to the Create method
name = "NewSite"
physicalPath = "C:\inetpub\wwwroot"
arrBindings = array(oBinding)

파일, 다른 이름으로 저장...을 클릭하여 저장 대화 상자를 엽니다. 대화 상자 아래쪽에 있는 텍스트 상자 형식으로 저장을 찾고 해당 값을 "텍스트 문서(*.txt)"에서 "모든 파일"로 변경합니다. 파일을 데스크톱에 "CreateSite.vbs"로 저장합니다.

시작을 클릭하고 검색 시작 상자를 클릭하고 cmd.exe 입력한 다음 Enter 키를 누릅니.

cd %SystemDrive%\Users\관리istrator\Desktop을 입력한 다음 Enter 키를 누릅니.

CreateSite.vbs를 입력하고 Enter 키를 누릅니. 스크립트는 오류 없이 실행되어야 합니다.

CIM Studio로 돌아가서 메서드 만들기를 마우스 오른쪽 단추로 클릭하고 이번에는 "메서드 한정자..."를 선택합니다. 아래 표시된 결과 대화 상자는 "Create" 메서드가 정적 메서드임을 보여 주세요. 취소를 클릭합니다.

정적 부울 한정자를 강조한 메서드 한정자 만들기 스크린샷

개체 정의에서 정적 메서드를 호출해야 합니다. 아래 스크립트 샘플에서는 개체 인스턴스 검색과 개체 정의 검색 간의 차이점을 보여 줍니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")        
' In order to retrieve an object instance, the object's key properties
' and their values must be specified in the WMI object instance path
Set oSite = oIIS.Get("Site.Name='Default Web Site'")    
' The object definition can be retrieved by specifying the name
' of the object without any key properties and values
Set oSiteDefn = oIIS.Get("Site")

CreateSite.vbs 스크립트에 몇 줄을 추가하여 사이트를 만듭니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
' Create a binding for the site
Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:80:www.newsite.com"
oBinding.Protocol = "http"
' These are the parameters we pass to the Create method
name = "NewSite"
physicalPath = "C:\inetpub\wwwroot"
arrBindings = array(oBinding)
' Get the Site object definition
Set oSiteDefn = oIIS.Get("Site")
' Create site!!
oSiteDefn.Create name, arrBindings, physicalPath
WScript.Echo "Site created successfully!"

cmd 프롬프트로 돌아가 CreateSite.vbs를 실행합니다. 다음 출력이 표시됩니다.

사이트를 만들었습니다.

사이트가 생성되었다는 증거를 보려면 다음을 입력합니다 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>

개체 만들기/삭제/수정에 대한 추가 참고 사항

Web관리istration 네임스페이스의 모든 개체를 만들거나 삭제할 수 있는 것은 아닙니다. 예를 들어 서버는 WorkerProcess 및 AppDo기본 개체의 수명 주기를 관리하며 WMI를 통해 만들거나 삭제할 수 없습니다.

개체를 만들거나 삭제하거나 수정할 수 있는지 확인하는 일반적인 방법을 알아보려면 CIM Studio에서 사이트를 검색합니다. 속성 탭의 속성 표를 마우스 오른쪽 단추로 클릭하고 개체 한정자를 클릭합니다 ... 아래 대화 상자가 표시됩니다.

지원 만들기, 삭제 지원 및 업데이트 부울 한정자를 강조한 개체 한정자의 스크린샷.

개체 한정자 SupportsCreate, SupportsDelete 및 SupportsUpdate는 개체를 만들거나 삭제하거나 수정할 수 있는지 여부를 설명합니다. 사이트를 만들고 삭제하고 수정할 수 있으므로 Site에는 이러한 한정자 세 가지가 모두 있으며 모두 true입니다.

CIM Studio에서 WorkerProcess를 검색합니다. 속성 탭의 속성 표를 마우스 오른쪽 단추로 클릭하고 개체 한정자를 클릭합니다... 아래 대화 상자는 WorkerProcess 개체에 이러한 세 가지 한정자가 없음을 보여 줍니다. 이러한 한정자의 값은 기본적으로 false입니다(자세한 내용은 표준 한정자 참조). 따라서 WorkerProcess 개체를 만들거나 삭제하거나 수정할 수 없습니다.

작업자 프로세스 개체 한정자의 스크린샷 지원 만들기, 삭제 지원 또는 지원 업데이트가 없습니다.

4. 모든 사이트 인스턴스 열거

아래 스크립트는 "InstancesOf" 메서드를 사용하여 Site 개체의 모든 인스턴스를 검색합니다. 아래 스크립트를 새 메모장 창에 붙여넣고 "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 스크립트를 실행합니다. 다음 출력(예: 기본 웹 사이트) 및 작업 3에서 만든 사이트가 표시됩니다.

기본 웹 사이트(1)

NewSite (2)

세부 정보

InstancesOf 메서드의 원본 위치와 자세한 내용을 확인할 수 있는 위치를 물어볼 수 있습니다. 스크립트의 첫 번째 줄은 Web관리istration WMI 네임스페이스에 연결하기 위해 이전에 여러 번 사용한 것과 동일한 줄입니다.

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

GetObject 호출은 네임스페이스에 대한 작업을 수행하는 데 사용할 수 있는 SWbemServices 개체를 반환합니다. 이 개체에는 InstancesOf 메서드뿐만 아니라 다양한 다른 유용한 메서드가 있습니다. InstancesOf 또는 사용 가능한 다른 메서드에 대한 자세한 내용은 SWbemServices의 플랫폼 SDK 문서를 참조하세요.

5. 사이트 시작 및 중지

사이트 상태를 수정하기 전에 사이트가 어떤 상태에 있는지 알아보세요. 아래 스크립트는 Web관리istration 네임스페이스에 연결하고, 사이트 인스턴스를 가져오고, 사이트 인스턴스에서 GetState 메서드를 호출합니다. GetState 메서드는 숫자 상태 반환하므로 이 스크립트에는 숫자 상태 보다 설명적인 문자열로 변환하는 도우미 함수가 포함되어 있습니다. 이 스크립트를 새 메모장 창에 붙여넣고 GetSiteStatus.vbs로 저장합니다.

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

Set oSite = oIIS.Get("Site.Name='NewSite'")
                                                
WScript.Echo GetStateDescription(oSite.GetState)
' -------helper functions-----------
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

cmd 프롬프트에서 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)
 
' -------helper functions-----------
                        
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"

StopSite.vbs 스크립트를 실행하면 다음 결과가 표시됩니다.

NewSite가 시작됨

NewSite가 중지됨

이제 사이트를 다시 시작해야 합니다. StopSite.vbs를 StartSite.vbs라는 새 스크립트에 복사합니다. StartSite.vbs를 열고 oSite.Stop 줄을 변경하여 oSite.Start를 읽습니다. StartSite.vbs를 실행하면 다음 출력이 표시됩니다.

NewSite가 중지됨

NewSite가 시작됨

6. 사이트 삭제

작업 4에서 만든 EnumSites.vbs 스크립트를 실행합니다. 서버에 두 개의 사이트가 있음을 의미하는 다음 출력이 표시됩니다.

기본 웹 사이트(1)

NewSite (2)

아래 스크립트는 Web관리istration 네임스페이스에 연결하고, 사이트의 NewSite 인스턴스를 가져오고, 삭제합니다. 이 스크립트를 새 메모장 창에 붙여넣고 DeleteSite.vbs로 저장합니다.

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

cmd 프롬프트에서 DeleteSite.vbs를 실행합니다.

EnumSites.vbs를 다시 실행하여 NewSite가 성공적으로 삭제되었는지 확인합니다. 기본 웹 사이트가 서버에서 유일하게 다시 기본 사이트임을 보여 주는 다음 출력이 표시됩니다.

기본 웹 사이트(1)

요약

사이트 또는 애플리케이션 개체의 특정 인스턴스를 검색하고, 사이트를 만들고, 모든 사이트 인스턴스를 열거하고, 사이트를 중지 및 시작하고, 마지막으로 사이트를 삭제하는 방법을 알아보았습니다. 이 정보의 대부분은 다른 네임스페이스 개체에 적용할 수 있습니다. 예를 들어 Application 및 ApplicationPool 개체는 사이트와 동일한 방식으로 만들어지고 삭제됩니다.