Gestione degli App Pools di IIS: un tutorial PowerShell

Hai bisogno di tenere d’occhio i pool di applicazioni del tuo server web IIS? Ecco una guida su come creare un pool di applicazioni in IIS con PowerShell.

Dove ti rivolgi quando gestisci una farm di server web IIS con potenzialmente dozzine o centinaia di pool di applicazioni? Ai comandi PowerShell, ovviamente! Utilizzando il modulo PowerShell WebAdministration fornito con IIS e un po’ di PowerShell remoto, puoi facilmente creare, modificare ed eliminare i pool di applicazioni a tuo piacimento.

Passiamo attraverso alcuni esempi su come fare questo.

Se non hai mai utilizzato PowerShell per gestire i tuoi server IIS, la tua prima inclinazione potrebbe essere quella di cercare un ComputerName nella maggior parte dei cmdlet. Purtroppo, questo non è il caso.

Per gestire i server IIS in remoto, siamo costretti a utilizzare il remoting di PowerShell con il cmdlet Invoke-Command. Anche se non è un ostacolo insormontabile, rende il codice un po’ più verboso di quanto potrebbe essere. Questo non vuole scoraggiarti a gestire i server IIS remoti con PowerShell, ma è più un’informazione utile.

Correlato: Invoke-Command: il modo migliore per eseguire codice remoto

I know I was pretty frustrated the first time I tried this and didn’t see that familiar ComputerName parameter on many of the cmdlets.

NOTA: Da ora in poi, costruiremo il codice da inserire in un blocco di script. Poi useremo Invoke-Command per eseguire questo blocco di script sul server IIS remoto.

Elencazione dei pool di applicazioni IIS con PowerShell

Per gestire i pool di applicazioni web, dovremo prima importare il modulo WebAdministration.

PS> Import-Module WebAdministration

Questo importa tutti i cmdlet di IIS e crea il drive IIS. Qui verrà effettuata la maggior parte della configurazione del pool delle app. Verifichiamo prima se esistono già dei pool di app.

PS> Get-ChildItem -Path IIS:\AppPools
 
 Name  State. Applications
 ----- ------ -------------
 GHI  Started

Creare nuovi pool di applicazioni IIS con PowerShell

Sembra che ne abbia già uno chiamato GHI. Forse ne voglio creare un altro. Utilizzando il drive IIS questo è molto facile. Basta utilizzare New-Item e specificare il percorso.

PS> New-Item -Path IIS:\AppPools\MyAppPool
 
 Name      State.  Applications
 -----     ------  -------------
 MyAppPool Started

Ispezione e modifica delle proprietà del pool di applicazioni

I’ve now created a new app pool. We can then check all of the properties on that app pool using Get-ItemProperty and select all of the properties it returns with Select-Object. This will return all of the property names and values so you can get figure out which ones you need to modify with Set-ItemProperty.

Get-ItemProperty IIS:\AppPools\MyAppPool | select *

Ora che hai un pool di app e puoi vedere le proprietà, modifichiamo una proprietà. Forse voglio utilizzare una particolare versione di .NET runtime con il pool di app. Di nuovo, utilizzando il drive IIS posso utilizzare Set-ItemProperty per gestire i pool di app come posso fare con il file system, il registro, i certificati e tutte le altre cose che hanno un drive PowerShell.

PS> Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'

Utilizzando Set-ItemProperty è possibile modificare quasi tutte le proprietà di un pool di app.

Rimuovere i pool di applicazioni con PowerShell

Infine, abbiamo finito con il nostro pool di app e ora dobbiamo rimuoverlo. Questa volta abbiamo un cmdlet di PowerShell integrato chiamato Remove-WebAppPool. Basta specificare il nome e sparisce!

Remove-WebAppPool -Name MyAppPool

Tutto questo codice che abbiamo utilizzato è stato eseguito localmente, ma cosa succede se è necessario eseguirlo su un server IIS remoto? Ecco dove interviene PowerShell remoting. Per fare ciò, sarà sufficiente raggruppare tutto questo codice in un blocco di script e quindi utilizzare Invoke-Command per eseguirlo sul server remoto.

$appPoolName = 'MyAppPool'
 $scriptBlock = {
    Import-Module WebAdministration
    New-Item -Path IIS:\AppPools\$using:appPoolName
    Set-ItemProperty -Path IIS:\AppPools\$using:appPoolName -Name managedRuntimeVersion -Value 'v4.0'
    Remove-WebAppPool -Name $using:appPoolName
 }
 
 Invoke-Command -ComputerName SOMEIISSERVER -ScriptBlock $scriptBlock

Anche se non molto funzionale, questo codice creerebbe un nuovo app pool chiamato MyAppPool, imposterebbe una proprietà e quindi la rimuoverebbe. Noterai che sto utilizzando la variabile $using. Poiché il codice nel blocco di script verrà eseguito su un computer remoto, ciò è necessario affinché PowerShell possa espandere quella variabile e utilizzare il valore effettivo di $appPoolName che è stato dichiarato localmente sul nostro computer client.

Se desideri saperne di più sulla gestione di IIS in generale, dai un’occhiata alla pagina di amministrazione di IIS Technet. Troverai tutti i cmdlet inclusi nel modulo WebAdministration e come puoi utilizzarli.

Source:
https://adamtheautomator.com/powershell-iis-2/