Condividi tramite


Snap-in di PowerShell: creazione di siti Web, app Web, dirs virtuali e pool di app

di Thomas Deml

In questa procedura dettagliata si apprenderà come creare siti Web, applicazioni Web, directory virtuali e pool di applicazioni.

Introduzione

Lo spazio dei nomi di IIS PowerShell è costituito da elementi come Siti Web, App, Directory virtuali e Pool di applicazioni. La creazione di nuovi elementi dello spazio dei nomi e la gestione di tali elementi è molto semplice usando i cmdlet predefiniti di PowerShell.

Creazione di Web-Sites

Se si ha familiarità con PowerShell, si sa che il cmdlet New-Item viene usato per creare nuovi elementi nei vari spazi dei nomi di PowerShell. Il comando New-Item c:\TestDirectory crea una nuova directory del file system, ad esempio la maggior parte degli utenti usa l'alias MD o MKDIR per New-Item . New-Item viene usato anche per creare nuovi Web-Sites all'interno dello spazio dei nomi di IIS PowerShell.

Parametri

Specificare il nome della directory è l'unico argomento necessario quando si crea una nuova directory del file system. Purtroppo questo non è sufficiente quando si crea un sito Web. Per creare un sito Web sono necessari parametri aggiuntivi come il percorso del file system e le associazioni di rete. Ecco il comando per creare un nuovo Web-Site seguito da un comando dir:

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

L'uso dell'argomento -physicalPath è piuttosto semplice. Ma potresti chiederti perché l'argomento -bindings sembra così complesso.

Il costrutto usato è una tabella hash (vedere qui per altre informazioni sulle tabelle hash di PowerShell). All'interno delle coppie hash table key=value indicano le impostazioni che riflettono gli attributi all'interno della sezione associazioni del sito IIS:

<bindings>
    <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

Ecco ora il motivo per cui si usa una tabella hash: la configurazione di IIS è completamente estendibile (vedere qui per altri dettagli) con sezioni e attributi aggiuntivi. Si può immaginare che qualcuno estende l'elemento <di associazione> con attributi aggiuntivi. Le coppie chiave-valore all'interno di una tabella hash offrono la flessibilità necessaria per incorporare questi nuovi attributi senza dover riscrivere completamente lo snap-in di IIS PowerShell.

Concessa, la sintassi è un po' complessa. Si sta pensando di eseguire il wrapping di alcune attività tipiche, ad esempio la creazione di siti con funzioni o script aggiuntivi in un'anteprima tecnica successiva.

Eliminazione di siti

Ecco come eliminare il sito appena creato.

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

Creazione di applicazioni Web

La creazione di applicazioni Web è più semplice rispetto alla creazione di siti. Ci siamo:

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test

L'unico parametro che è necessario specificare è il tipo (-type) perché sotto un Web-Site potrebbe essere necessario creare un'applicazione o una directory virtuale. Specificando il parametro -type che indica allo snap-in IIS di creare un'applicazione.

Per eliminare l'applicazione, è anche possibile usare Remove-Item.

Creazione di directory virtuali

Per creare una directory virtuale, usare anche il cmdlet New-Item. Verrà ora creata una directory virtuale sotto "Sito Web predefinito" e una seconda sotto l'applicazione Web creata nel passaggio precedente.

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

Creazione di pool di applicazioni

Ma diventa ancora più semplice. Per creare un nuovo pool di app è necessario specificare solo il nome.

PS IIS:\> new-item AppPools\DemoAppPool
Name                     State
----                     -----
DemoAppPool              {}

Semplice, vero? A questo punto verrà illustrato uno scenario end-to-end.

Mettere tutto insieme

Nello scenario end-to-end seguente verrà eseguito il passaggio seguente:

  1. Creare un set di nuove directory del file system per i siti, le applicazioni Web e le directory virtuali che verranno create più avanti.
  2. Copiare alcuni contenuti Web molto semplici nelle directory appena create.
  3. Creare un nuovo pool di applicazioni
  4. Creare un nuovo sito, una nuova applicazione e due nuove directory virtuali e assegnarle al pool di applicazioni appena creato.
  5. Richiedere il contenuto Web tramite il Web browser.

Passaggio 1: Creare nuove directory

Viene usato il cmdlet New-Item per creare quattro nuove directory del file system. Eseguire i comandi seguenti (usare 'md' anziché New-Item se non si vuole specificare il parametro -type):

New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

Passaggio 2: Copiare il contenuto

A questo punto si scriverà un contenuto HTML semplice in queste directory:

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

Passaggio 3: Creare un nuovo pool di applicazioni

Creare il nuovo pool di applicazioni 'DemoAppPool' per il nuovo sito se è stato eliminato quello creato nell'esempio precedente.

New-Item IIS:\AppPools\DemoAppPool

Nota

Il cmdlet precedente avrà esito negativo se il modulo WebAdministration non è stato importato. A tale scopo, è possibile aggiungere il cmdlet seguente come primo passaggio di uno script contenente il cmdlet precedente:

Import-Module "WebAdministration"

Passaggio 4: Creare nuovi siti, applicazioni Web e directory virtuali e assegnarlo al pool di applicazioni

Ecco la carne bovina. Creiamo DemoSite, DemoApp e due directory virtuali: DemoVirtualDir1 si trova direttamente sotto DemoSite e DemoVirtualDir2 è sotto DemoApp. Si sta assegnando DemoSite e DemoApp a DemoAppPool creato nel passaggio precedente. DemoSite viene assegnato alla porta 8080 per non entrare in conflitto con il "Sito Web predefinito"

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

Voilà. Tutto ciò che rimane è richiedere il contenuto Web.

Passaggio 5: Richiedere il contenuto Web

Naturalmente è possibile aprire il browser e immettere http://localhost:8080/ e tutti gli altri URL. Ma si tratta di una procedura dettagliata di PowerShell e si userà PowerShell per eseguire questa operazione usando le classi WebClient .NET:

$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

Se ti senti avventuroso, puoi anche utilizzare l'oggetto Internet Explorer stesso:

$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");

Riepilogo

In questa procedura dettagliata si è appreso come creare siti Web, applicazioni Web, directory virtuali e pool di applicazioni con PowerShell. Sono state usate funzionalità aggiuntive di PowerShell per creare uno scenario end-to-end funzionale.