Spotkania grup offline

Biuletyny zabezpieczeń

Microsoft w Polsce

Statystyka

  • W tej chwili mamy:
    518 czytelników online
    116 805 zarejestrowanych
  • Do dziś zanotowaliśmy:
    120 817 352 odsłon
    55 952 odsłon / 24h
Microsoft Most Valuable Professional

Wprowadzenie do zarządzania IIS za pomocą PowerShell

  • Data publikacji: 2009-08-05 06:00|
  • Odsłon: 1901|
  • Dodał: Łukasz Foks|
  • Odbiorcy: IT PRO|

  • Poziom trudności: Nieokreślony|
  • Komentarze (1)

Autor:

Adam Zając (Adam_n)

Artykuł jest pracą w konkursie "Popisz się".

Serwer IIS 7.0 pozwala na bardzo elastyczne podejście do konfiguracji. Parametry serwera, witryn, aplikacji możemy konfigurować na kilka sposobów. Możemy użyć do tego graficznego narzędzia jakim jest IIS Manager, skorzystać z polecenia Appcmd.exe albo też wykorzystać  do zarządzania PowerShell, co będzie treścią tego artykułu.

Windows PowerShell Provider dla IIS to PowerShell snapin, który pozwala na wykonywanie zadań administracyjnych dla IIS, oraz na zarządzanie konfiguracją serwera IIS. Dodatkowo otrzymujemy zbiór cmdletów pozwalających w prosty sposób zarządzać witrynami sieci Web, aplikacjami Web i serwerami Web.

Za pomocą PowerShell Provider dla IIS możemy między innymi:

  • Utworzyć witryny Web, aplikacje Web, wirtualne katalogi i pule aplikacji,
  • Zmienić proste właściwości obiektów IIS opisanych w punkcie 1,
  • Dodawać i zmieniać złożone ustawienia konfiguracyjne,
  • Odpytywać serwer IIS o stan uruchomionych witryn, pul aplikacji, aktualnie wykonywanych żądań.

Pierwszą rzeczą jaką musimy zrobić to zainstalować PowerShell  snap-in for IIS 7.0 na maszynie, na której znajduje się nasz IIS 7.0. Jest on dostępny zarówno w wersji 32- jak i 64-bitowej.

PowerShell snap-in dla IIS 7.0 dla działania wymaga zainstalowanych:

  • Windows Server 2008 lub Windows Vista Service Pack 1
  • Microsoft PowerShell 1.0 lub 2.0

Instalacja jest prosta i sprowadza się do  uruchomienia pobranego pliku msi:

Po kilku chwilach mamy już w systemie skrót do IIS PowerShell Management Console, z której możemy zarządzać serwerem IIS. Możemy też ręcznie zarejestrować IIS snap-in, aby uruchamiać go z istniejącego okna konsoli PowerShell. Jeżeli chcemy to zrobić musimy uruchomić plik IISConsole.PSC1, który zlokalizowany jest w katalogu $env:programfiles\IIS\PowerShellProvider.

Aby to zrobić z poziomu PowerShell należy wykonać następujące polecenie

PS C:\> & "$env:programfiles\IIS\PowerShellSnapin\iisConsole.psc1"

Powershell  snap-in wykorzystuje analogie do systemu plikowego w zarządzaniu IIS. Górną ścieżką, z której możemy zarządzać IIS jest wirtualny dysk „IIS:\", poniżej którego znajdziemy wszystkie obiekty serwera IIS. Poniżej struktura  przestrzeni nazw w IIS 7.0 PowerShell snapin:

  • IIS:\
    • Sites
      • Site Collection
        • Applications and Virtual Directories
    • AppPools
      • WorkerProcesses

SslBindings

Witryny uruchomione na IIS znajdują się w tej strukturze pod sites, pule aplikacji pod AppPools, analogicznie jak w systemie plikowym.

Na początku zobaczmy jak bogata jest lista cmdletów, za pomocą których możemy zarządzać serwerem IIS:

PS IIS:\sites> Get-Command *-web*

CommandType        Name

Cmdlet          Add-WebConfiguration

Cmdlet          Add-WebConfigurationLock                            

Cmdlet          Add-WebConfigurationProperty    

Cmdlet          Backup-WebConfiguration                            

Cmdlet          Begin-WebCommitDelay                                

Cmdlet          Clear-WebConfiguration                              

Cmdlet          Clear-WebRequestTracingSettings                     

Cmdlet          ConvertTo-WebApplication                            

Cmdlet          Disable-WebGlobalModule                             

Cmdlet          Disable-WebRequestTracing                           

Cmdlet          Enable-WebGlobalModule  

Cmdlet          Enable-WebRequestTracing                          

Cmdlet          End-WebCommitDelay                                 

Cmdlet          Get-WebAppDomain                                     

Cmdlet          Get-WebApplication                                 

Cmdlet          Get-WebAppPoolState

Cmdlet          Get-WebBinding                                      

Cmdlet          Get-WebConfigFile                                      

Cmdlet          Get-WebConfiguration                                

Cmdlet          Get-WebConfigurationBackup                          

Cmdlet          Get-WebConfigurationLocation                        

Cmdlet          Get-WebConfigurationLock                            

Cmdlet          Get-WebConfigurationProperty                        

Cmdlet          Get-WebFilePath                                     

Cmdlet          Get-WebGlobalModule                                 

Cmdlet          Get-WebHandler                                      

Cmdlet          Get-WebItemState                                    

Cmdlet          Get-WebManagedModule                

Cmdlet          Get-WebRequest                                       

Cmdlet          Get-Website                                        

Cmdlet          Get-WebsiteState                                   

Cmdlet          Get-WebURL                                     

Cmdlet          Get-WebVirtualDirectory                             

Cmdlet          New-WebApplication                              

Cmdlet          New-WebAppPool                                      

Cmdlet          New-WebBinding                                     

Cmdlet          New-WebFtpSite                                      

Cmdlet          New-WebGlobalModule                             

Cmdlet          New-WebHandler                                 

Cmdlet          New-WebManagedModule                              

Cmdlet          New-Website  

Cmdlet          New-WebVirtualDirectory                             

Cmdlet          Remove-WebApplication                             

Cmdlet          Remove-WebAppPool                                   

Cmdlet          Remove-WebBinding                                   

Cmdlet          Remove-WebConfigurationBackup                       

Cmdlet          Remove-WebConfigurationLocation                   

Cmdlet          Remove-WebConfigurationLock                        

Cmdlet          Remove-WebConfigurationProperty                     

Cmdlet          Remove-WebGlobalModule                              

Cmdlet          Remove-WebHandler                                

Cmdlet          Remove-WebManagedModule                        

Cmdlet          Remove-Website                                   

Cmdlet          Remove-WebVirtualDirectory       

Cmdlet          Rename-WebConfigurationLocation                

Cmdlet          Restart-WebAppPool                                  

Cmdlet          Restart-WebItem                                     

Cmdlet          Restore-WebConfiguration                         

Cmdlet          Select-WebConfiguration                             

Cmdlet          Set-WebBinding                                       

Cmdlet          Set-WebConfiguration                                

Cmdlet          Set-WebConfigurationProperty                        

Cmdlet          Set-WebGlobalModule                              

Cmdlet          Set-WebHandler                              

Cmdlet          Set-WebManagedModule                                

Cmdlet          Start-WebAppPool                                  

Cmdlet          Start-WebItem                                  

Cmdlet          Start-Website                                    

Cmdlet          Stop-WebAppPool                                     

Cmdlet          Stop-WebItem                                        

Cmdlet          Stop-Website                                         

Oraz jak dużo tych poleceń mamy:

(get-command *-web*).count

71

Jak widać do dyspozycji mamy 71 cmdletów, które związane są ściśle z zarządzaniem IIS, oczywiście również dysponujemy pozostałymi poleceniami PowerShell.

Aby uzyskać szczegółowe informacje na temat poszczególnych cmdletów wystarczy skorzystać z standardowego polecenia Get-help dostępnego w PowerShell. Obecnie prześledźmy kilka z dostępnych poleceń w działaniu.

Aby zorientować się jakie witryny są uruchomione na IIS wystarczy, że przejdziemy w przestrzeni nazw do sites, a potem wywołamy znane polecenie dir:

PS IIS:\> dir

Name

AppPools

Sites

SslBindings

PS IIS:\> cd sites

PS IIS:\sites> dir

Name             ID   State      Physical Path                  Bindings

----             --   -----      -------------                  --------

Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:  

Jak widać w systemie jest tylko jedna standardowa witryna. Poszczególne pola pozwalają na odczytanie jej stanu, fizycznej ścieżki, oraz portów przypisanych do tej strony. Możemy do tego samego celu użyć dostępnego polecenia:

PS IIS:\> Get-Website

Name             ID   State      Physical Path                  Bindings

----             --   -----      -------------                  --------

Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:

Poniżej przykład jak z poziomu IIS PowerShell Management Console utworzyć nową witrynę IIS:

PS IIS:\Sites\> New-Item IIS:\Sites\TestSite -bindings @{protocol="http"; bindingInformation=":80:TestSite"} -physicalPath c:\test

Parametry -bindings przedstawione są za pomocą hash tabeli, natomiast -physicalPath określa fizyczne położenie witryny.

Name             ID   State      Physical Path                  Bindings

----             --   -----      -------------                  --------

TestSite         2    Started    c:\test                        http:80:TestSite

Jeżeli jeszcze  raz użyjemy polecenia Get-Website otrzymamy następujący rezultat:

PS IIS:\> Get-Website

Name             ID   State      Physical Path                  Bindings

----             --   -----      -------------                  --------

Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:

TestSite         2    Started    c:\test                        http:80:TestSite

Analogicznie możemy utworzyć aplikacje dla nowo utworzonej witryny:

PS IIS:\sites\> New-Item 'IIS:\Sites\TestSite\DemoApp' -physicalPath c:\test -type Application

Name             Application pool   Protocols    Physical Path

----             ----------------   ---------    -------------

DemoApp          DefaultAppPool     http         c:\test

Oraz wirtualny katalog:

PS IIS:\sites\> New-Item 'IIS:\Sites\TestSite\DemoVirtualDir1' -type

VirtualDirectory -physicalPath c:\test\virtualDirectory1

Name                                         PhysicalPath

----                                         ------------

DemoVirtualDir1                              c:\test\virtualDirectory1

Możemy też podmienić pulę aplikacji, do której będzie przypisana nowo utworzona aplikacja. Najpierw tworzymy nową pulę aplikacji:

PS IIS:\sites\> cd ..

PS IIS:\> New-Item AppPools\DemoAppPool

Name                     State        Applications

----                     -----        ------------

DemoAppPool              Started

A potem przypisujemy jej wcześniej utworzoną aplikacje:

PS IIS:\ Set-ItemProperty IIS:\Sites\TestSite\DemoApp -name applicationPool

-value DemoAppPool

Za pomocą dostępnych poleceń możemy np. badać status uruchomionych witryn, zatrzymywać je, uruchamiać jak widać poniżej:

PS IIS:\sites> Get-WebItemState IIS:\Sites\TestSite

Value

-----

Started

PS IIS:\sites> Stop-WebItem TestSite

PS IIS:\sites> Get-WebItemState IIS:\Sites\TestSite

Value

-----

Stopped

PS IIS:\sites> Start-WebItem TestSite

PS IIS:\sites> Get-WebItemState IIS:\Sites\TestSite

Value

-----

Started

Na zakończenie przykład jak uzyskać listę dostępnych backupów konfiguracji IIS oraz jak wykonać backup konfiguracji IIS. Lista kopi zapasowych:

PS IIS:\sites>  Get-WebConfigurationBackup

Name                                 Creation Date

----                                 -------------

Backup100709                         7/10/2009 12:00:00 AM

IISBackup01                          5/12/2009 12:00:00 AM

CFGHISTORY_0000000032                7/7/2009 9:50:00 AM

CFGHISTORY_0000000033                7/7/2009 10:02:12 AM

CFGHISTORY_0000000034                7/8/2009 9:03:09 AM

CFGHISTORY_0000000035                7/10/2009 1:13:47 PM

CFGHISTORY_0000000036                7/10/2009 1:23:47 PM

CFGHISTORY_0000000037                7/10/2009 1:25:47 PM

CFGHISTORY_0000000038                7/10/2009 1:27:47 PM

CFGHISTORY_0000000039                7/10/2009 2:05:47 PM

CFGHISTORY_0000000040                7/10/2009 2:07:47 PM

CFGHISTORY_0000000041                7/10/2009 2:31:47 PM

Nowa kopia konfiguracji IIS:

PS IIS:\> Backup-WebConfiguration -name MyBackup160709

Name                                 Creation Date

----                                 -------------

MyBackup160709                       7/16/2009 12:00:00 AM

Powyższe przykłady są jedynie wstępem do poznania komend umożliwiających zarządzanie IIS przy pomocy PowerShella. Jednak gdy mamy już kilka serwerów IIS  użycie IIS PowerShell Management Console znacząco pozwoli usprawnić nam pracę i na pewno warto jest poświęcić swój czas, aby bliżej przyjrzeć się temu rozwiązaniu.

Na zakończenie należy zaznaczyć, że Windows PowerShell Provider for IIS jest  dostępny standardowo w wersji serwera IIS 7.5, która pojawi się wraz z nadejściem Windows Server 2008 R2 i Windows 7.

Zasoby dodatkowe:

Krótki (4min) film wprowadzający do Windows PowerShell Snap-In for IIS 7.0

IIS.net: Managing IIS with the IIS 7.0 PowerShell Snap-in

  • Ocena: 100,00% 0,00% (głosów: 7)
Autor

Komentarz


d0m3l
Ekspert WSS

wypowiedzi: 702
od: 2006-12-15

Wprowadzenie do zarządzania IIS za pomocą PowerShell 2009-08-10 (Pn) 10:42
Bardzo fajny artykulik :) na pewno się przyda :)

--
I was a PC, now I'm a server ;)
http://w-files.pl
Zaloguj się, żeby odpowiedzieć