Maîtrise PowerShell IIS : Créer et gérer des sites Web

Si vous gérez des serveurs Windows, vous avez probablement travaillé avec Internet Information Services (IIS). Les sites web sont l’une des principales fonctionnalités d’IIS et, à l’aide de PowerShell, vous pouvez facilement gérer et automatiser IIS avec des scripts PowerShell IIS !

Dans cet article, vous serez introduit à une nouvelle façon de gérer IIS en utilisant PowerShell. En utilisant les techniques décrites dans cet article, vous pouvez facilement créer des scripts PowerShell IIS pour créer et gérer des sites web dans IIS.

Pour gérer IIS avec PowerShell, vous avez besoin de l’un des deux modules PowerShell – WebAdminstration ou IISAdminstration. Cet article couvre le module IISAdministration plus moderne. La vidéo associée à cet article présente l’ancien module WebAdministration si vous souhaitez voir une alternative.

Savoir comment gérer même un site web simple pour votre entreprise ou pour le monde entier vous distinguera de vos pairs. Les sections suivantes de cet article vous aideront à apprendre comment créer et gérer un site web dans IIS. Vous apprendrez également comment gérer les pools d’applications web à l’aide de quelques cmdlets PowerShell.

Modules IISAdministration vs WebAdministration

Vous avez deux options pour gérer IIS. Vous pouvez utiliser WebAdministration ou IISAdministration. Mais lequel devez-vous utiliser ?

Si vous utilisez IIS 10.0 ou une version supérieure, le nouveau module IISAdministration offre de nombreuses améliorations par rapport à l’ancien module WebAdministration.

Voici quelques points forts :

  • Les cmdlets IISAdministration offrent un meilleur support pour le pipeline et une meilleure évolutivité.
  • Comparés aux anciennes cmdlets IIS WebAdministration, les cmdlets IISAdministration contiennent un code plus efficace.
  • Les cmdlets IISAdministration sont plus simples et offrent un accès direct au gestionnaire de serveur.

Cet article va se concentrer sur ce nouveau module IISAdministration.

Prérequis

Cet article sera pratique. Si vous souhaitez suivre, assurez-vous d’avoir les prérequis suivants en place.

The Windows 10 “Turn Windows features on or off” dialogue

Il est recommandé de connaître les bases du HTML. Il y aura une étape où l’utilisation de l’HTML joue un rôle dans les exemples à venir. Mais ne vous inquiétez pas, vous pourrez copier et coller le code !

Tous les exemples de cet article ont été créés avec IIS 10.0 sur Windows 10 et PowerShell 7 Preview 6. Les cmdlets IISAdministration sont les mêmes pour Windows Server 2016 et 2019 et fonctionnent avec Windows PowerShell 5.1.

C’est tout pour les outils utilisés, passons maintenant aux ressources nécessaires pour suivre.

Installation du module IISAdministration.

Une fois que vous avez satisfait aux prérequis, il est temps de faire quelques travaux de configuration. Heureusement, il n’y a pas beaucoup de configuration à faire, car le module PowerShell dont vous avez besoin (IISAdministration) est librement disponible dans la PowerShell Gallery.

Allez-y et ouvrez une console PowerShell avec élévation de privilèges sur votre serveur web et installez le module en utilisant la commande ci-dessous.

PS> Install-Module -Name 'IISAdministration'

Si vous n’avez pas accès à Internet, vous pouvez télécharger le module sur un autre hôte et copier le module dans votre répertoire des modules. Consultez la documentation de la commande Save-Module.

Découverte des cmdlets disponibles

Comme avec n’importe quel module PowerShell que vous ne connaissez pas, l’une des premières cmdlets que vous devriez utiliser pour découvrir l’inventaire des cmdlets d’un module est Get-Command. En utilisant la commande Get-Command -Module 'IISAdministration' comme indiqué ci-dessous, vous pourrez voir ce qui est possible avec ce module.

Même si vous allez apprendre quelques actions courantes à effectuer sur les sites web, ces commandes vous donneront une idée de tout ce que vous pouvez faire.

Get-Command -Module ‘IISAdministration’ results

Maintenant, vous avez une liste de cmdlets disponibles. Il est temps de commencer à créer votre premier site web.

Création de votre premier site web

Pour avoir un site web avec lequel travailler, commençons par créer un site web. Pour ce faire, la première étape consiste à créer un répertoire pour enregistrer le contenu web. De plus, vous aurez besoin d’un fichier HTML dans ce répertoire pour que IIS puisse l’afficher. Ce répertoire servira de répertoire web utilisé dans les exemples ultérieurs.

Création du dossier et de la page web

Tout d’abord, créez un répertoire. Pour ce faire, vous pouvez utiliser la commande New-Item. Le code ci-dessous créera un répertoire à C:\MonSiteWeb.

PS> New-Item -ItemType Directory -Name 'MyWebsite' -Path 'C:\'

Vous pouvez choisir n’importe quel chemin avec le code ci-dessus. Pour simplifier les choses, des chemins génériques seront utilisés.

Une fois que vous avez créé le répertoire, il est temps de créer un fichier HTML qui sera la page d’accueil de votre nouveau site web.

Créez maintenant un fichier appelé index.html dans le répertoire C:\MonSiteWeb comme indiqué ci-dessous.

PS> New-Item -ItemType File -Name 'index.html' -Path 'C:\MyWebsite\'

Une fois que le fichier est créé, ouvrez-le dans votre éditeur préféré et copiez-collez le code ci-dessous dans ce document. Cet HTML est une page simple qui sera utilisée pour vérifier que IIS est correctement configuré lorsque vous avez terminé.

<!DOCTYPE html>
<html>
    <head>
         <title>IIS Administration With PowerShell Demo</title>
    </head>
    <body>
        <h1>IIS Administration with PowerShell Demo</h1>
        <p>Thank you for reading this post on how to administer IIS with PowerShell!</p>

        <p>This page was created using the newer IISAdministration PowerShell module.</p>
        <h2>First Steps</h2>
        <p>Keep calm and learn PowerShell.</p>
    </body>
</html>

Création d’un site web IIS

Il est maintenant temps de rendre la page web que vous venez de créer disponible pour le monde entier. Pour ce faire, vous devrez créer un répertoire virtuel. Le répertoire virtuel contient tous les éléments et ressources utilisés pour la page qui est servie.

Par défaut, IIS crée un répertoire virtuel sous C:\inetpub\wwwroot. Le répertoire contient tous les actifs et ressources de la page web par défaut pour IIS. Vous pouvez également utiliser le répertoire par défaut C:\inetpub\wwwroot pour stocker vos fichiers, mais pour ces exemples, il ne sera pas utilisé afin de garder les chemins aussi courts que possible. C’est pourquoi vous utilisez C:\MyWebsite à la place.

Pour créer un nouveau répertoire virtuel (site), utilisez la commande New-IISSite. Cette commande vous permet de créer le site web IIS.

Pour cet article, créez un site web appelé Mywebsite pointant vers le répertoire C:\MyWebsite qui écoute sur le port 8088. Dans le code ci-dessous, vous pouvez voir comment faire cela en utilisant la commande New-IISSite.

La seule partie qui peut être déroutante est le paramètre BindingInformation. Ce paramètre n’accepte que la syntaxe de liaison. Dans cet extrait, New-IISSite créera un site web lié à une adresse IP (* est identique à 127.0.0.1), le port TCP sur lequel écouter, suivi de tout en-tête HTTP.

La syntaxe de liaison peut être expliquée comme suit : protocole, suivi de source:Port:destination. Dans cet exemple, vous avez configuré IIS pour écouter les requêtes HTTP provenant de N’IMPORTE quelle () adresse IP sur le port 8088 et la destination est l’localhost.*

PS> New-IISSite -Name 'MyWebsite' -PhysicalPath 'C:\MyWebsite\' -BindingInformation "*:8088:"

Une fois que le site a été créé, vous pouvez exécuter Get-IISSite pour inspecter son apparence comme indiqué ci-dessous.

Creating a New Website in IIS

Par défaut, la configuration du site web est démarrée et votre hôte web commence à servir les requêtes HTTP. Ouvrez votre navigateur préféré et accédez à la machine locale en pointant vers le port 8088. Vous devriez maintenant voir la page web que vous avez créée précédemment affichée.

MyWebSite IIS site in a web browser

Félicitations ! Vous venez de mettre en place votre premier site web sur IIS en utilisant PowerShell !

Maintenant que vous avez un site web en cours d’exécution, il est temps d’apprendre à gérer votre site web et le serveur IIS qui l’héberge.

Gestion du site web IIS

Une fois qu’un site web est en cours d’exécution, vous devrez sans aucun doute effectuer des actions courantes telles que l’arrêt et le démarrage du site. Par exemple, si le site a besoin de mises à jour, vous devrez parfois redémarrer le site.

Pour gérer le site avec PowerShell, vous disposez de deux cmdlets à utiliser – Start-IISSite et Stop-IISSite. Ces deux cmdlets fonctionnent de manière similaire aux cmdlets Stop-Service et Start-Service.

L’arrêt d’un site web est similaire à l’arrêt d’un service Windows. Vous empêchez ou autorisez l’accès au site accessible par un protocole servi sur un port unique par IIS. Cependant, vous n’arrêtez pas l’hôte IIS. Les sites peuvent être arrêtés et démarrés de manière individuelle.

Arrêter un seul site

Pour arrêter un site IIS, vous utiliserez la cmdlet Stop-IISSite. Par défaut, le site que vous avez créé précédemment devrait être dans un état Démarré. Si vous arrêtez le site et empêchez ainsi l’accès à MonSiteWeb, exécutez Stop-IISSite en fournissant le nom comme indiqué ci-dessous. Ce code arrête le site MonSiteWeb qui est servi par IIS. Après avoir arrêté le site, vous ne pourrez plus y accéder.

PS> Stop-IISSite -Name "MyWebsite"

Un exemple d’inspection de l’état du site web comme Démarré, d’arrêt et d’inspection de l’état à nouveau est présenté ci-dessous. Dans cet exemple, vous :

  1. Obtenez l’état du site MonSiteWeb en utilisant Get-IISSite.
  2. Exécutez la cmdlet Stop-IISSite sur le site MonSiteWeb. Cette cmdlet arrête l’accès au site web. Étant donné que cette action effectue des modifications opérationnelles, vous serez invité à confirmer.
  3. Exécutez à nouveau Get-IISSite pour vérifier que le site MonSiteWeb est arrêté en remarquant l’état Arrêté.
Getting, stopping, and confirming MyWebsite state

Arrêter tous les sites

Ci-dessus, vous avez arrêté un seul site, mais vous pouvez également arrêter tous les sites aussi facilement. En utilisant le pipeline et en envoyant la sortie de Get-IISSite vers Stop-IISSite, PowerShell énumérera tous les sites et les arrêtera tous. Dans l’exemple de code ci-dessous, le paramètre de commutation facultatif Verbose est utilisé pour afficher plus d’informations.

Get-IISSite | Stop-IISSite -Verbose
Stopping all IIS sites with PowerShell

Vous pouvez également arrêter tous les sites dans IIS en arrêtant le service W3SVC ou World Wide Web Publishing Service. L’arrêt du service Windows ferme IIS et empêche tous les sites d’être servis. Si vous le faites, cependant, les sites peuvent toujours apparaître comme étant en état de démarrage.

Démarrer un seul site

Disons que vous avez apporté des modifications au site MyWebsite et que vous devez le redémarrer. Il est temps d’utiliser la commande Start-IISSite. Pour ce faire, spécifiez simplement le nom comme vous l’avez fait en utilisant la cmdlet Stop-IISSite.

PS> Start-IISSite -Name 'MyWebsite'

Lorsqu’elle est exécutée, vous pouvez ensuite inspecter à nouveau l’état en utilisant Get-IISSite. Lorsque vous le faites, vous devriez voir une sortie similaire à la capture d’écran ci-dessous.

Checking the status of MyWebsite using Get-IISSite and starting the site with Start-IISSite

Et maintenant, votre site devrait être à nouveau disponible sur http://localhost:8088 si vous rafraîchissez votre navigateur.

Démarrer tous les sites

De la même manière que vous avez arrêté tous les sites, vous pouvez utiliser le pipeline pour démarrer tous les sites web sur votre hôte IIS.

PS> Get-IISSite | Start-IISSite

Encore une fois, vous obtenez tous les sites IIS en cours de service et utilisez le pipeline pour démarrer chacun d’entre eux. Votre sortie devrait ressembler à la capture d’écran ci-dessous.

Using the pipeline to start all sites on host

Gestion des liaisons web

Il est maintenant temps d’effectuer certaines tâches administratives courantes sur le site MyWebsite. L’une des tâches les plus courantes est de modifier les liaisons web.

Lorsque vous avez créé le site MyWebsite, vous avez utilisé la syntaxe de liaison *:8088:. Cette syntaxe représentait l’écoute sur l’adresse IP 127.0.0.1, sur le port 80 sans en-têtes HTTP. Disons maintenant que vous avez décidé que vous voulez plutôt que le site écoute sur le port 9000. Pour cela, vous devrez modifier les liaisons du site.

Inspection des liaisons existantes

Avant de pouvoir modifier les liaisons du site, vous devez d’abord inspecter la configuration actuelle. Une façon de le faire est d’inspecter la propriété Binding renvoyée par Get-IISSite. Remarquez dans l’extrait de code suivant comment le faire. Dans l’extrait, Get-IISSite interroge le site MyWebSite et ne renvoie que la propriété Bindings.

PS> (Get-IISSite -Name 'MyWebsite').Bindings

Lorsque vous inspectez uniquement la propriété Bindings, PowerShell renvoie un objet avec quelques informations différentes, comme indiqué ci-dessous.

Example 1: Finding binding information

Si vous souhaitez uniquement voir les informations de liaison, vous pouvez spécifiquement faire référence à la propriété bindingInformation comme indiqué ci-dessous.

Example 2: Finding binding information

Suppression des liaisons

Si vous souhaitez modifier le port sur lequel un site écoute, vous devez d’abord supprimer la liaison existante qui le lie à ce port. Pour supprimer la liaison, vous devez d’abord arrêter le site.

PS> Stop-IISSite -Name 'MyWebsite'

Une fois le site arrêté, vous pouvez maintenant supprimer la liaison existante qui lie le site MyWebsite au port 8088. Pour ce faire, vous pouvez utiliser la cmdlet Remove-IISSiteBinding.

Pour supprimer la liaison pour MyWebsite telle que définie précédemment, ci-dessous vous pouvez voir un exemple d’utilisation de Remove-IISSiteBinding pour le faire. Ci-dessous, vous fournissez le nom du site et spécifiez la syntaxe de la liaison précédemment découverte.

PS> Remove-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:8088:"

Lorsque vous exécutez le code, vous serez invité à confirmer votre décision, car vous effectuez une action destructrice comme indiqué ci-dessous.

Removing site binding using Verbose parameter

Il n’y a pas de limite au nombre de liaisons que vous pouvez avoir. Vous pouvez tout aussi facilement conserver la liaison d’origine et ajouter le port TCP 9000 en tant que nouvelle liaison.

Maintenant, vous pouvez exécuter à nouveau Get-IISSite -Name 'MyWebsite'. Vous verrez maintenant que les informations de liaison ont été supprimées, comme indiqué par la valeur vide sous Bindings.

Confirming the old bindings were removed

Même si le site est publié, IIS ne sait pas comment router le trafic vers votre site.

Il est important d’avoir au moins une liaison attribuée à votre site. Pour vous montrer l’importance, essayez de naviguer vers http://localhost:8088/index.html à nouveau. Si vous utilisiez le navigateur web Mozilla Firefox, vous pouvez voir ce message ci-dessous.

Can’t establish a connection

Création de nouvelles liaisons

Dans la dernière section, vous avez supprimé la seule liaison du site MyWebsite. Bien que cela ait cassé le site, ce n’est qu’un problème temporaire. Il est temps de corriger ce problème en créant une nouvelle liaison.

Pour créer une nouvelle liaison, utilisez la cmdlet New-IISSiteBinding. Étant donné que vous devez maintenant lier le port 9000 au site MyWebsite, spécifiez la syntaxe de liaison correcte comme indiqué ci-dessous.

PS> New-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:9000:"

Une fois que vous avez créé la nouvelle liaison, redémarrez le site avec Start-IISSite. Rappelez-vous que pour créer cette nouvelle liaison, IIS a nécessité la fermeture du site.

Lorsque le site redémarre, vous devriez maintenant pouvoir y accéder sur le port 9000. Pour vérifier cela, ouvrez votre navigateur web préféré et accédez à http://localhost:9000. Vous devriez maintenant voir que la page web fonctionne à nouveau sur le port 9000.

Same page, different TCP port

Suppression d’un site

Si vous venez de suivre un tutoriel et que vous n’avez pas l’intention de conserver le site MyWebsite de façon permanente, il est temps de le nettoyer. Pour supprimer un site, utilisez la commande Remove-IISSite.

La suppression d’un site IIS peut être une opération risquée, surtout si vous supprimez un site sur IIS qui héberge d’autres sites web de production. Pour vérifier que vous supprimez le bon site, il est recommandé d’utiliser le paramètre commun WhatIf de PowerShell. Ce paramètre vous permet d’inspecter ce qui se serait passé si la commande avait réellement été exécutée.

Vous pouvez voir un exemple de suppression du site MyWebsite en utilisant le paramètre WhatIf ci-dessous.

Remove-IISSite -Name 'MyWebSite' -WhatIf
Being careful with destructive cmdlets by using -WhatIf !

Si tout semble bon, lâchez la barre de sécurité et exécutez à nouveau le code, cette fois sans le paramètre -WhatIf.

Lors de l’utilisation de la commande Remove-IISSite, le site n’est pas supprimé. Il est simplement retiré de la configuration de IIS. Les fichiers du site web restent intacts.

Résumé

Dans cet article, vous avez appris à créer un site web en utilisant le module IISAdministration. Vous avez vu comment effectuer des opérations administratives nécessaires pour maintenir un site web. Vous savez maintenant suffisamment les bases pour travailler avec n’importe quel hébergeur IIS moderne en utilisant PowerShell !

Plus de lecture

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