Gestion des pools d’applications IIS : un tutoriel PowerShell

Besoin de surveiller vos pools d’applications sur votre serveur web IIS ? Voici un guide sur la façon de créer un pool d’applications dans IIS avec PowerShell.

Où vous tournez-vous lorsque vous gérez une ferme de serveurs web IIS avec potentiellement des dizaines ou des centaines de pools d’applications ? Des scripts PowerShell, bien sûr ! En utilisant le module PowerShell WebAdministrationPowerShell qui est installé en tant que partie d’IIS et un peu de remoting PowerShell, vous pouvez facilement créer, modifier et supprimer des pools d’applications à volonté.

Passons en revue quelques exemples sur la façon de réaliser cela.

Si vous n’avez jamais utilisé PowerShell pour gérer vos serveurs IIS auparavant, votre première inclination pourrait être de rechercher un ComputerName sur la plupart des cmdlets. Malheureusement, ce n’est pas le cas.

Pour gérer les serveurs IIS à distance, nous sommes obligés d’utiliser le remoting PowerShell avec le cmdlet Invoke-Command. Bien que ce ne soit pas rédhibitoire, cela rend le code un peu plus verbeux qu’il ne le pourrait être. Ceci n’est pas pour vous dissuader de gérer les serveurs IIS à distance avec PowerShell mais plutôt pour vous informer.

Connexe : Invoke-Command : La meilleure façon d’exécuter du code à distance

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.

REMARQUE : À partir de maintenant, nous allons construire du code à insérer dans un scriptblock. Nous utiliserons ensuite Invoke-Command pour exécuter ce scriptblock sur le serveur IIS distant.

Liste des pools d’applications IIS avec PowerShell

Pour gérer les pools d’applications web, nous devrons d’abord importer le module WebAdministration.

PS> Import-Module WebAdministration

Cela importe toutes les cmdlets IIS et crée le lecteur IIS. C’est là que la plupart de la configuration des pools d’applications sera effectuée. Commençons par vérifier si des pools d’applications existent déjà.

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

Créer de nouveaux pools d’applications IIS avec PowerShell

On dirait que j’en ai déjà un appelé GHI. Peut-être que je veux en créer un autre. Utiliser le lecteur IIS rend cela si facile. Il suffit d’utiliser New-Item et de spécifier le chemin.

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

Inspection et modification des propriétés des pools d’applications

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 *

Maintenant que vous avez un pool d’applications et que vous pouvez voir les propriétés, modifions une propriété. Peut-être que je veux utiliser une version spécifique de .NET avec le pool d’applications. Encore une fois, en utilisant le lecteur IIS, je peux utiliser Set-ItemProperty pour gérer les pools d’applications comme je peux le faire avec le système de fichiers, le registre, les certificats et toutes les autres choses qui ont un lecteur PowerShell.

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

En utilisant Set-ItemProperty, vous pouvez modifier presque toutes les propriétés d’un pool d’applications.

Supprimer des pools d’applications avec PowerShell

Enfin, nous avons terminé avec notre pool d’applications et nous devons maintenant le supprimer. Cette fois, nous avons une cmdlet PowerShell intégrée appelée Remove-WebAppPool. Il suffit de spécifier le nom, et il disparaît!

Remove-WebAppPool -Name MyAppPool

Tout ce code que nous avons utilisé a été exécuté localement mais que faire si vous devez l’exécuter sur un serveur IIS distant? C’est là que le PowerShell remoting entre en jeu. Pour ce faire, nous devrons simplement regrouper tout ce code dans un bloc de script, puis utiliser Invoke-Command pour l’exécuter sur le serveur distant.

$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

Bien que peu fonctionnel, ce code créerait un nouveau pool d’applications nommé MyAppPool, définirait une propriété, puis la supprimerait. Vous remarquerez que j’utilise la variable $using. Comme le code dans le bloc de script va s’exécuter sur un ordinateur distant, il est nécessaire que PowerShell étende cette variable et utilise la valeur réelle de $appPoolName qui a été déclarée localement sur notre ordinateur client.

Si vous souhaitez en savoir plus sur la gestion d’IIS en général, consultez la page d’administration IIS de Technet. Vous y trouverez tous les cmdlets inclus dans le module WebAdministration et comment les utiliser.

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