Snap-in di PowerShell: apportare modifiche alla configurazione ai siti Web e ai pool di app
di Thomas Deml
In questa procedura dettagliata si apprenderà come modificare le proprietà semplici dei contenitori di spazi dei nomi IIS, ad esempio Siti Web, Applicazioni Web, Directory virtuali e Pool di applicazioni usando i cmdlet predefiniti di PowerShell. La procedura dettagliata successiva illustra come modificare le proprietà di configurazione nelle sezioni system.webServer e nelle sezioni personalizzate.
Introduzione
L'attività degli snap-in di PowerShell consiste nell'offrire spazi dei nomi che possono essere gestiti con cmdlet di PowerShell comuni, ad esempio New-Item, Get-Item, Get-ChildItems, Set-Item, Set-ItemProperty e così via. I cmdlet predefiniti funzionano con tutti gli spazi dei nomi forniti da PowerShell. New-Item c:\testdir
ad esempio consente di creare una nuova directory del file system, ma è anche possibile creare un nuovo oggetto IIS come un Web-Site o un pool di applicazioni, ad esempio New-Item IIS:\AppPools\NewAppPool
.
Nella procedura dettagliata precedente è stato iniziato a usare i cmdlet New-item e Get-Item. In questa procedura dettagliata verranno esaminati altri cmdlet predefiniti.
Spesso potrebbe essere necessario modificare le impostazioni per questi elementi dopo averli creati. A tale scopo, vengono usati i cmdlet predefiniti New-ItemProperty e Set-ItemProperty. Verrà inoltre illustrato come usare Get-Item e Set-Item.
Questa procedura dettagliata si basa sul Web-Site 'Demosite' e sulle relative applicazioni Web e directory virtuali create nell'ultima procedura dettagliata.
Esaminare le impostazioni di configurazione
Prima di iniziare a modificare le impostazioni, è necessario esaminarle per prime. Ecco un comando per esaminare le impostazioni di configurazione di 'DemoSite'.
PS IIS:\> get-item IIS:\Sites\DemoSite
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
DemoSite 2 Started c:\demosite http :8080:
In questo modo è possibile visualizzare le proprietà più importanti del sito. Potrebbero essere interessate altre impostazioni.
Ecco un comando che fornisce altri dettagli:
(Get-ItemProperty IIS:\Sites\DemoSite -Name bindings).Collection
Nell'esempio precedente viene usata la parentesi perché la chiamata Get-ItemProperty deve essere valutata prima di poter stampare le voci della raccolta. In questo caso la stessa cosa della matematica: (5 + 4) * 3 valuterà prima 5 + 4, quindi moltiplica per 3. In questo caso, i risultati del comando Get-ItemProperty verranno valutati e l'oggetto di configurazione IIS risultante contiene una raccolta restituita nella schermata.
È possibile usare la stessa strategia con altre proprietà o raccolte, ad esempio la sezione ProcessModel di AppPools. Il comando seguente, ad esempio, restituisce un bel oggetto DateTime per startupTimeLimit di DemoAppPool:
PS IIS:\> (Get-ItemProperty IIS:\AppPools\DemoAppPool -name processModel).startupTimeLimit
Days : 0
Hours : 0
Minutes : 1
Seconds : 30
Milliseconds : 0
Ticks : 900000000
TotalDays : 0.00104166666666667
TotalHours : 0.025
TotalMinutes : 1.5
TotalSeconds : 90
TotalMilliseconds : 90000
Modifica delle impostazioni del sito e del pool di app
Esistono due modi di base per apportare modifiche.
- Se si modifica una proprietà semplice, usare Set-ItemProperty.
- Se si usa una raccolta e si vuole aggiungere una nuova voce di raccolta, si usa New-ItemProperty. In un'installazione predefinita di IIS l'insieme bindings è l'unica raccolta usata nello spazio dei nomi IIS.
Set-ItemProperty e New-ItemProperty
Per iniziare, aggiungere un'associazione aggiuntiva a DemoSite:
PS IIS:\> New-ItemProperty IIS:\sites\DemoSite -name bindings -value @{protocol="http";bindingInform
ation=":8081:"}
PS IIS:\> dir IIS:\Sites
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 Started f:\inetpub\wwwroot http *:80:
DemoSite 2 Started c:\demosite http :8080:
http :8081:
Come si può vedere DemoSite è ora in ascolto anche sulla porta 8081.
Utilizzare il Set-ItemProperty se si desidera modificare una proprietà esistente. Modifica del nome del sito, ad esempio:
PS IIS:\> Set-ItemProperty IIS:\Sites\DemoSite -name name -value NewDemoSite
PS IIS:\> dir iis:\Sites
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 Started f:\inetpub\wwwroot http *:80:
NewDemoSite 2 Started c:\demosite http :8080:
http :8081:
Si tornerà al nome precedente:
PS IIS:\> Set-ItemProperty IIS:\Sites\NewDemoSite -name name -value DemoSite
Si vuole anche modificare l'identità eseguita dal pool di applicazioni. Prima di tutto è necessario creare un utente. A questo scopo si userà ADSI
$computer = [ADSI]"WinNT://."
$user = $computer.Create("user", "DemoAppPoolUser")
$user.SetPassword("Secret!!Pw3009")
$user.SetInfo()
A questo momento è possibile configurare DemoAppPool per l'esecuzione come utente:
Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}
Per essere estendibili viene usata una tabella hash precedente valida per i nomi delle proprietà e i relativi valori. Se si è dimenticato come usarlo, di seguito è riportato il collegamento .
Set-Item e Get-Item
Si eseguirà la stessa operazione, ovvero l'assegnazione di un utente a un pool di applicazioni, con la combinazione set-item/get-item. È possibile che questa variante sia un po' migliore perché consente di sfruttare il completamento della riga di comando. Per vedere come funziona non copiare e incollare i comandi seguenti. Immettere un paio di caratteri e usare il tasto TAB per sfruttare i vantaggi del completamento della riga di comando:
PS IIS:\AppPools> $demoPool = Get-Item IIS:\AppPools\DemoAppPool
PS IIS:\AppPools> $demoPool.processModel.userName = "DemoAppPoolUser"
PS IIS:\AppPools> $demoPool.processModel.password = "Secret!!Pw3009"
PS IIS:\AppPools> $demoPool.processModel.identityType = 3
PS IIS:\AppPools> $demoPool | Set-Item
Riepilogo
In questa procedura dettagliata si è appreso come usare i cmdlet forniti da PowerShell per gestire contenitori di spazi dei nomi IIS come Siti e pool di applicazioni. Si è appreso come usare le tabelle hash e come sfruttare i vantaggi del completamento della riga di comando. Nella procedura dettagliata successiva si apprenderà come usare i cmdlet snap-in IIS per apportare modifiche di configurazione alle impostazioni di configurazione IIS non esposte tramite lo spazio dei nomi Snap-in IIS.