Snap-in PowerShell : modifier la configuration des sites web et des pools d'applications

par Thomas Deml

Dans cette procédure pas à pas, vous allez apprendre à modifier des propriétés simples des conteneurs d’espaces de noms IIS tels que les sites web, les applications web, les répertoires virtuels et les pools d’applications à l’aide d’applets de commande PowerShell intégrées. La procédure pas à pas suivante explique comment modifier les propriétés de configuration sur les sections system.webServer et les sections personnalisées.

Présentation

La tâche des PowerShell Snap-ins consiste à proposer des espaces de noms pouvant être gérés avec des applets de commande PowerShell courantes et intégrées telles que New-Item, Get-Item, Get-ChildItems, Set-Item, Set-ItemProperty, etc. Les applets de commande intégrées fonctionnent sur tous les espaces de noms fournis par PowerShell. New-Item c:\testdir Par exemple, vous pouvez créer un répertoire de système de fichiers, mais vous pouvez également créer un objet IIS comme un Web-Site ou un pool d’applications, par exemple New-Item IIS:\AppPools\NewAppPool.

Dans la procédure pas à pas précédente, nous avons commencé à utiliser les applets de commande New-item et Get-Item. Cette procédure pas à pas explorera davantage les applets de commande intégrées.

Souvent, vous devrez peut-être modifier les paramètres sur ces éléments après les avoir créés. Pour ce faire, nous utilisons les applets de commande intégrées New-ItemProperty et Set-ItemProperty. Nous allons également voir comment utiliser Get-Item et Set-Item.

Cette procédure pas à pas s’appuie sur le Web-Site « Demosite » et ses applications web et ses répertoires virtuels que nous avons créés au cours de la dernière procédure pas à pas.

Examiner les paramètres de configuration

Avant de commencer à modifier les paramètres, nous voulons les examiner en premier. Voici une commande permettant d’examiner les paramètres de configuration de « DemoSite ».

PS IIS:\> get-item IIS:\Sites\DemoSite
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
DemoSite         2    Started    c:\demosite                    http :8080:

Cela vous donne une vue des propriétés les plus importantes du site. Il existe d’autres paramètres que vous pourriez trouver intéressants.

Voici une commande qui vous donne plus de détails :

(Get-ItemProperty IIS:\Sites\DemoSite -Name bindings).Collection

Dans l’exemple ci-dessus, nous utilisons des parenthèses, car l’appel Get-ItemProperty doit d’abord être évalué avant de pouvoir imprimer les entrées de collection. Dans ce cas, le genre de la même chose que dans les mathématiques : (5 + 4) * 3 évalue les 5 + 4 en premier, puis multiplie par 3. Dans ce cas, les résultats de Get-ItemProperty commande seront évalués et l’objet de configuration IIS résultant contient une collection que nous produisons à l’écran.

Vous pouvez utiliser la même stratégie avec d’autres propriétés ou collections comme la section ProcessModel AppPools. La commande suivante retourne, par exemple, un objet DateTime bien structuré pour le startupTimeLimit de notre 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

Modification des paramètres de site et AppPool

Il existe deux méthodes de base pour apporter des modifications.

  1. Si vous modifiez une propriété simple, vous utilisez Set-ItemProperty.
  2. Si vous traitez d’une collection et que vous souhaitez ajouter une nouvelle entrée de collection, vous utilisez New-ItemProperty. Dans une installation iis par défaut, la collection de liaisons est la seule collection utilisée dans l’espace de noms IIS.

Set-ItemProperty et New-ItemProperty

Commençons par ajouter une liaison supplémentaire à notre 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:

Comme vous pouvez le voir, DemoSite est maintenant également à l’écoute sur le port 8081.

Utilisez la Set-ItemProperty si vous souhaitez modifier une propriété existante. Modification du nom du site par exemple :

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:

Revenons à l’ancien nom :

PS IIS:\> Set-ItemProperty IIS:\Sites\NewDemoSite -name name -value DemoSite

Nous voulons également modifier l’identité sous laquelle notre pool d’applications s’exécute. Tout d’abord, nous devons créer un utilisateur. Utilisons ADSI pour ce faire

$computer = [ADSI]"WinNT://."
$user = $computer.Create("user", "DemoAppPoolUser")
$user.SetPassword("Secret!!Pw3009")
$user.SetInfo()

Nous sommes maintenant prêts à configurer DemoAppPool pour qu’il s’exécute en tant qu’utilisateur suivant :

Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}

Pour être extensible, nous utilisons une vieille table de hachage pour les noms de propriétés et leurs valeurs. Si vous avez oublié comment l’utiliser, voici un lien .

Set-Item et Get-Item

Nous allons faire de même, c’est-à-dire affecter un utilisateur à un pool d’applications, avec la combinaison set-item/get-item. Vous pourriez préférer cette variante car elle vous permet de profiter de la complétion automatique en ligne de commande. Pour voir comment cela fonctionne, ne copiez pas et collez les commandes suivantes. Entrez quelques caractères et appuyez sur la touche TAB pour profiter de la complétion de ligne de commande.

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

Résumé

Dans cette procédure pas à pas, vous avez appris à utiliser des applets de commande fournies par PowerShell pour gérer des conteneurs d’espaces de noms IIS tels que sites et pools d’applications. Vous avez appris à utiliser des tables de hachage et à profiter de la complétion de la ligne de commande. Dans la procédure pas à pas suivante, vous allez apprendre à utiliser les applets de commande de composant logiciel enfichable IIS pour apporter des modifications de configuration aux paramètres de configuration IIS qui ne sont pas exposés via l’espace de noms de composant logiciel enfichable IIS.