다음을 통해 공유


PowerShell 스냅인: IIS PowerShell 스냅인의 작업 기반 Cmdlet 사용

작성자 : Thomas Deml

소개

IIS PowerShell 스냅인 cmdlet은 다음 세 가지 범주로 그룹화할 수 있습니다.

  • 공급자 계층 구조에 필요한 Cmdlet
  • 하위 수준 configuratioin cmdlet
  • 작업 기반 cmdlet

이 연습에서는 작업 기반 IIS cmdlet을 소개하고 이를 사용하는 몇 가지 예제를 제공합니다.

공급자 계층 구조에 필요한 Cmdlet

IIS는 초기에 IIS 구성을 사이트, 애플리케이션, 가상 디렉터리 및 애플리케이션 풀의 계층 구조로 사용할 수 있도록 하기로 결정했습니다. 이점은 고객이 계층 구조에서 사이트 또는 애플리케이션과 같은 위치로 이동하고 이 컨텍스트에서 설정을 설정할 수 있다는 것입니다. 탐색 계층 구조를 지원하려면 New-Item, Set-ItemProperty 등과 같은 미리 정의된 특정 PowerShell cmdlet을 지원합니다. 를 구현해야 합니다. 계층 구조와 이러한 기본 제공 cmdlet은 2008년 4월 Tech Preview 1에 제공되었습니다.

하위 수준 구성 Cmdlet

IIS 구성 시스템은 버전 7에서 완전히 수정되었습니다. 새 구성 시스템은 완전히 XML 기반의 스키마 기반이며 완전히 확장할 수 있습니다. 새 IIS FTP 서버(FTP7) 및 URL 재작성기, WebDAV 등과 같은 다른 많은 IIS 모듈 이 확장성을 활용하여 IIS 구성 시스템에 연결합니다.

이러한 확장성을 통해 정적 인수를 사용하여 cmdlet을 배송하기가 어렵습니다. 누군가가 기존 구성 섹션을 확장하는 경우를 가정해 보십시오. 예를 들어 누군가가 virtualDirectory 구성 섹션에 myFancyNewBehavior 속성을 추가합니다. IIS cmdlet fancyNewBehavior 설정을 수정하지 않으면 PowerShell 스냅인 cmdlet을 통해 설정할 수 없습니다.

IIS PowerShell 스냅인의 Technical Preview 1에는 전체 구성 확장성을 고려한 하위 수준 cmdlet만 포함되었습니다. 모든 IIS 구성 설정(컬렉션, 열거형 등이 있는 100개 이상의 구성 섹션)은 이러한 cmdlet을 사용하여 구성할 수 있습니다. 이러한 하위 수준 cmdlet은 사용자 지정 구성에 대해서도 작동합니다(예: 고유한 구성 섹션으로 IIS 구성을 확장한 경우).

다음은 2008년 4월 Tech Preview 1 이후 제공되는 하위 수준 cmdlet 목록입니다.

Add-WebConfiguration                                                                               
Add-WebConfigurationProperty                                                                       
Begin-WebCommitDelay                                                                                  
Clear-WebConfiguration                                                                             
End-WebCommitDelay                                                                                    
Get-WebURL                                                                                            
Get-WebConfiguration                                                                               
Get-WebConfigurationProperty                                                                       
Get-WebItemState                                                                                   
Remove-WebConfigurationProperty                                                                    
Restart-WebItem                                                                                    
Set-WebConfiguration                                                                               
Set-WebConfigurationProperty   
Select-WebConfiguration                                                             
Start-WebItem                                                                                      
Stop-WebItem

작업 기반 Cmdlet

여기에 흥미 진진한 소식이 온다. 웹 사이트 만들기, 활성화된 요청 추적, 처리기 또는 모듈 추가와 같은 일상적인 IIS 작업의 경우 IIS PowerShell 스냅인과 함께 제공되는 작업 기반 cmdlet을 사용할 수 있습니다. 작업 기반 cmdlet 목록은 다음과 같습니다.

Add-WebConfigurationLock
Backup-WebConfiguration
Clear-WebRequestTracingSettings
ConvertTo-WebApplication
Disable-WebGlobalModule
Disable-WebRequestTracing
Enable-WebGlobalModule
Enable-WebRequestTracing
Get-WebAppDomain
Get-WebApplication
Get-WebAppPoolState
Get-WebBinding
Get-WebConfigFile
Get-WebConfigurationBackup
Get-WebConfigurationLocation
Get-WebConfigurationLock
Get-WebFilePath
Get-WebGlobalModule
Get-WebHandler
Get-WebItemState
Get-WebManagedModule
Get-WebRequest
Get-Website
Get-WebsiteState
Get-WebURL
Get-WebVirtualDirectory
New-WebApplication
New-WebAppPool
New-WebBinding
New-WebFtpSite
New-WebGlobalModule
New-WebHandler
New-WebManagedModule
New-Website
New-WebVirtualDirectory
Remove-WebApplication
Remove-WebAppPool
Remove-WebBinding
Remove-WebConfigurationBackup
Remove-WebConfigurationLocation
Remove-WebConfigurationLock
Remove-WebGlobalModule
Remove-WebHandler
Remove-WebManagedModule
Remove-Website
Remove-WebVirtualDirectory
Rename-WebConfigurationLocation
Restart-WebAppPool
Set-WebBinding
Set-WebGlobalModule
Set-WebHandler
Set-WebManagedModule
Start-WebAppPool
Start-Website
Stop-WebAppPool
Stop-Website

작업 기반 Cmdlet에 대한 도움말

'기본 제공 도움말 시스템을 사용하면 사용할 수 있는 cmdlet과 사용 방법을 가장 쉽게 확인할 수 있습니다. 다음 명령은 모든 IIS cmdlet을 나열합니다.

get-command -pssnapin WebAdministration

또 다른 방법은 모든 IIS cmdlet에 사용하는 -Web 접두사를 찾는 것입니다. 다음 명령을 사용하세요.

get-command *-Web*

기본 제공 도움말 시스템은 개별 cmdlet에 대한 빠른 설명, 필요한 매개 변수 및 인수에 대한 설명을 제공하며 cmdlet을 사용하는 방법의 예가 있습니다. 다음을 시도해 보세요.

get-help New-WebSite

특정 cmdlet에 대한 전체 도움말을 받으려면 다음을 입력할 수 있습니다.

get-help New-Website -full

사용 방법의 예제만 보려면 다음 명령을 시도합니다.

get-help New-Website -example

엔드 투 엔드 예제

작업 기반 cmdlet의 성능은 엔드 투 엔드 시나리오에 사용할 때 표시됩니다. 다음 예제에서는 새 웹 사이트를 만들고, 일부 콘텐츠를 웹 사이트에 추가하고, 구성을 변경하고, 추적 요청을 사용하도록 설정하고, 새 콘텐츠 페이지를 요청합니다.

1단계: 새 웹 사이트 만들기

다음 명령을 입력합니다.

PS IIS:\>mkdir "$env:systemdrive\inetpub\MyNewWebSite"

그러면 새 사이트에 대한 새 물리적 디렉터리가 만들어집니다.

PS IIS:\>New-Website -name "MyNewWebSite" -PhysicalPath "$env:systemdrive\inetpub\MyNewWebSite" -port 81

위의 줄은 새로 만든 디렉터리를 가리키고 포트 81에서 수신 대기하는 새 웹 사이트를 만듭니다.

2단계: 사이트에 콘텐츠 추가

다음 명령은 IIS 네임스페이스를 탐색하고 새 콘텐츠 파일을 만듭니다.

PS IIS:\>cd IIS:\sites\MyNewWebsite

위의 명령은 IIS 네임스페이스의 MyNewWebSite 노드로 이동합니다.

PS IIS:\Sites\MyNewWebSite> dir

위의 명령은 새 웹 사이트의 모든 내용을 나열합니다. 콘텐츠가 없으므로 아무 것도 표시되지 않습니다.

PS IIS:\Sites\MyNewWebSite> notepad "$(Get-WebFilePath .)\test.htm"

위의 명령은 메모장을 열고 test.htm 편집할 수 있습니다. 웹 사이트의 실제 경로를 기억하지 않아도 됩니다. 일부 텍스트(예: "헬로 월드")를 입력하고 파일을 메모장에 저장합니다.

PS IIS:\Sites\MyNewWebSite> dir

dir 명령을 다시 입력하면 새로 만든 파일 test.htm 표시됩니다.

PS IIS:\Sites\MyNewWebSite> Get-WebURL -content ".\test.htm"

위의 명령은 새로 만든 웹 사이트에 HTTP 요청을 만들고 메모장에 입력한 콘텐츠를 반환합니다.

3단계: 요청 추적 사용

중요: 이 예제를 작동하려면 IIS 추적 기능을 사용하도록 설정해야 합니다. Windows Vista에서 제어판 열고 "프로그램"을 클릭하고 "Windows 기능 켜기 또는 끄기"를 선택합니다. "인터넷 정보 서비스", "World Wide Web Services", "상태 및 진단" 아래에서 "추적"을 찾아 선택하고 "확인"을 클릭합니다.

마지막 단계로 요청 추적을 사용하도록 설정합니다. 웹 요청 추적은 요청이 실행되는 동안 발생한 일에 대한 자세한 로그를 가져올 수 있는 IIS 기능입니다. 이 기능은 많은 문제 해결 시나리오에 매우 유용합니다. 웹 요청 추적을 사용하도록 설정하려면 Enable-WebRequestTracing이라는 다른 위치 인식 cmldet을 실행하기만 하면 합니다.

PS IIS:\Sites\MyNewWebSite> Enable-WebRequestTracing

이제 Enable-WebRequestTracing cmdlet에서 작성한 구성을 web.config 파일을 살펴보겠습니다. 위치 인식인 Get-WebConfigFile cmdlet을 사용하여 이 작업을 수행합니다.

PS IIS:\Sites\MyNewWebSite> notepad (Get-WebConfigFile)

구성은 다음과 같이 표시됩니다.

web.config 파일의 내용

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions timeTaken="00:00:30" statusCodes="200-500" verbosity="Warning" />
                </add>
            </traceFailedRequests>
        </tracing>
    </system.webServer>
</configuration>

중요한 구성은 failureDefinitions 규칙입니다. 기본적으로 추적 파일은 오류 코드가 200에서 500 사이이거나 요청이 30초보다 오래 걸리는 경우에 생성됩니다. 다음 명령을 실행하여 200-500 오류 범위에서 응답을 생성하는 요청을 실행해 보겠습니다.

PS IIS:\Sites\MyNewWebSite>Get-WebURL -url http://localhost:81/URL_DOES_NOT_EXIST

존재하지 않는 리소스에 대한 요청은 404 오류를 생성합니다. 추적 파일을 보려면 다음 위치로 이동해야 합니다.

PS IIS:\Sites\MyNewWebSite>cd "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\"

이제 인터넷 Explorer xml 파일을 열어 추적 파일을 확인할 수 있습니다.

PS C:\inetpub\logs\FailedReqLogFiles\W3SVC2>&"$env:programfiles\Internet Explorer\iexplore.exe" "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\fr000001.xml"

요약

새 작업 기반 cmdlet을 사용하면 관리자가 PowerShell을 사용하여 일상적인 IIS 작업을 쉽게 수행할 수 있습니다. cmdlet은 위치 인식과 직관적인 구문 및 도움말을 제공합니다.

Tech Preview 1 이후 제공되는 하위 수준 IIS cmdlet은 여전히 고급 IIS 관리 작업을 허용합니다.