Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
- Creare un set di nuove directory del file system per i siti, le applicazioni Web e le directory virtuali che verranno create più avanti.
- Copiare alcuni contenuti Web molto semplici nelle directory appena create.
- Creare un nuovo pool di applicazioni
- Creare un nuovo sito, una nuova applicazione e due nuove directory virtuali e assegnarle al pool di applicazioni appena creato.
- 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.