2010. 7. 26. 17:40

안녕하세요. 엉스데브 입니다.

Windows 7, Windows 2008 R2 부터 IIS 를 설치 시 PowerShell IIS 관리 모듈이 같이 설치 됩니다. 모듈의 이름은 “WebAdministration” 이며, PowerShell 에서 Import-Module cmdlet 으로 불러들여서 사용 할 수 있습니다.

먼저, WebAdministration 모듈이 존재하는지 확인 합니다.

Get-Module -ListAvailable


해당 모듈을 사용 할 수 있도록 Import 합니다.

Import-Module -Name WebAdministration



“IIS 구성 데이터에 액세스하려면 프로세스에서 높은 상태를 가져야 합니다.” 라는 오류메시지가 나오는 군요. PowerShell 을 관리자 권한으로 실행 시켜야겠네요.

, 스크립트를 실행 할 권한이 없다고도 나오는 군요. 이 부분은 실행 정책을 “RemoteSigned” 로 변경해서 처리 할 수 있습니다.(링크 : PowerShell 자체 인증서 생성과 스크립트 인증 하기)

관리자 권한으로 PowerShell 을 실행하고, 실행 권한도 조정 한 후 다시 Import 했습니다.

별다른 오류 없이 잘 넘어가는 군요.

WebAdministration 모듈이 Import 되었으니, 새로 추가 된 명령어들을 확인 해 봅시다.

Get-Command -Module WebAdministration


여러 명령어가 추가 된 것을 확인 할 수 있습니다.

도움말을 통해 각 cmdlet 을 어떻게 사용 하는지 확인 해 보는 것을 추천 합니다.

, 그럼 먼저 웹사이트를 하나 만들어 볼까요?
웹사이트를 운영하려면, 먼저 해당 웹사이트가 사용 할 ApplicationPool 을 만들어야 합니다. New-WebAppPool 명령어로 만들 수 있습니다.

New-WebAppPool -Name "Test Site"



잘 만들어 졌네요.

이제, 사이트의 내용이 들어갈 홈디렉토리를 만들어 주어야 합니다. “C:\wwwroot\TestSite” 로 만들었습니다.
Force 파라미터를 주면 부모 디렉터리가 존재하지 않을 경우 강제로 만들어 줍니다.

mkdir C:\wwwroot\TestSite -Force

 

 

이제 웹 사이트를 만들어 봅시다. New-Website cmdlet 을 이용 합니다.

New-Website -Name "Test Site" -ApplicationPool "Test Site" -PhysicalPath "C:\wwwroot\TestSite"




이런, 오류가 발생하는군요.
배열 범위가 벗어났다는 오류가 발생하는데, 구글링 결과 기존에 만들어진 사이트가 전혀 없어 ID 값을 자동으로 생성 해 내지 못했기 때문이라고 합니다. ID 값을 1로 강제 지정 하고 다시 시도 합니다.

New-Website -Name "Test Site" -ApplicationPool "Test Site" -PhysicalPath "C:\wwwroot\TestSite" -Id 1



잘 만들어 졌습니다. 자동으로 시작 상태가 되었군요.

WebAdministration
모듈은 IIS: 라는 Provider 도 제공 합니다.
해당 Provider 를 통해 마치 하드디스크의 파일 내용을 탐색 하듯이 탐색 해 볼 수가 있습니다.
IIS:\
의 내용을 살펴 보면, 다음과 같은 내용을 확인 할 수 있습니다.


AppPools
에는 현재 만들어진 모든 ApplicationPool 이 들어있고, Sites 엔 현재 만들어진 모든 사이트가 들어있습니다.



만들어진 아이템(ApplicationPool, 사이트)의 속성을 변경하고 싶다면, Set-ItemProperty cmdlet 을 사용하면 됩니다. PhysicalPath “C:\wwwroot” 로 변경 해 보았습니다.

Set-ItemProperty "IIS:\Sites\Test Site" -Name "physicalPath" -Value "C:\wwwroot"




physical Path 값이 잘 변경 되었네요.

만약, ApplicationPool 을 재생하고 싶다면, Get-Item cmdlet 으로 재생하고자 하는 ApplicationPool 을 선택 한 뒤, .Recycle() 메소드를 호출 하면 됩니다.

(Get-Item "IIS:\AppPools\Test Site").Recycle()


, 해당 ApplicationPool 을 중지 하고 싶다면 Stop() 메소드를, 시작하고 싶다면 Start() 메소드를 사용 할 수 있으며, state 속성을 보면 현재 실행 상태를 확인 할 수 있습니다.

(Get-Item "IIS:\AppPools\Test Site").state
(Get-Item "IIS:\AppPools\Test Site").Start()
(Get-Item "IIS:\AppPools\Test Site").Stop()



ApplicationPool의 시작, 중지, 재시작 등의 작업은 Start-WebAppPool, Stop-WebAppPool, Restart-WebAppPool 등의 cmdlet 을 사용해서도 할 수 있습니다. 자세한 내용은 get-help 를 통해 확인 해 보세요!

이제 다 가지고 놀았으니 정리해야 겠네요 ^^
지금까지 만든 모든 웹사이트와 ApplicationPool 을 삭제했습니다.

Remove-WebAppPool *
Remove-Website *



깔끔히 지워졌네요.

지금까지 WebAdministration
모듈을 간단히 살펴봤는데, 아주 잘 만들어진 것 같습니다.
PowerShell 만으로도 IIS 세팅에 관한 원하는 모든 작업을 할 수 있을 것 같네요.

앞으로 WebAdministration 모듈을 적극 이용해서 사이트 설정 등을 자동화 하면 좋을 것 같습니다.

<참조 문서>
Get-Help about_Modules

<참조 URL>
http://www.winserverhelp.com/2010/07/automating-iis-with-powershell/
http://learn.iis.net/page.aspx/447/managing-iis-with-the-iis-70-powershell-snap-in/

Posted by 알 수 없는 사용자
:

BLOG main image
Windows Server를 공부 하는 사람들의 팀블로그 by 마성민

카테고리

분류 전체보기 (76)
Windows (2)
Powershell (56)
AD (0)
Exchange (6)
System Center (9)
IIS (0)
SQL (3)
Sharepoint (0)

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

Total :
Today : Yesterday :