Composant logiciel enfichable PowerShell : modification de la configuration de sites web et de pools d’applications
Auteur : Thomas Deml
Dans cette procédure pas à pas, vous allez apprendre à modifier des propriétés simples de conteneurs d’espaces de noms IIS, tels que des sites web, des applications web, des répertoires virtuels et des pools d’applications, à l’aide d’applets de commande PowerShell intégrées. Dans la prochaine procédure pas à pas, vous apprendrez à modifier des propriétés de configuration sur des sections system.webServer et des sections personnalisées.
Introduction
La fonction des composants logiciels enfichables PowerShell est de proposer des espaces de noms qui peuvent être gérés avec des applets de commande PowerShell intégrées et couramment utilisées telles que New-Item, Get-Item, Get-ChildItems, Set-Item et Set-ItemProperty. Les applets de commande intégrées fonctionnent sur tous les espaces de noms fournis par PowerShell. Vous pouvez ainsi créer un répertoire de système de fichiers (par exemple, New-Item c:\testdir
), mais vous pouvez également créer un objet IIS comme un site web 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 explore davantage les applets de commande intégrées.
Il arrive fréquemment que vous ayez besoin de modifier les paramètres de 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 verrons également comment utiliser Get-Item et Set-Item.
Cette procédure pas à pas s’appuie sur le site web « Demosite » et ses applications web et répertoires virtuels que nous avons créés au cours de la dernière procédure pas à pas.
Examen des paramètres de configuration
Avant de modifier les paramètres, procédons à leur examen. Voici une commande qui permet 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:
Cette commande vous permet de voir les propriétés les plus importantes du site. Cependant, d’autres paramètres peuvent vous intéresser.
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 puisque nous devons évaluer l’appel Get-ItemProperty avant de pouvoir afficher les entrées de la collection. Ici, c’est comme en mathématiques : si vous avez (5 + 4) * 3, l’opération 5 + 4 est évaluée en premier, puis le résultat est multiplié par 3. Dans ce cas, les résultats de la commande Get-ItemProperty sont évalués et l’objet de configuration IIS résultant contient une collection que nous affichons à l’écran.
Vous pouvez utiliser la même stratégie avec d’autres propriétés ou collections comme la section processModel AppPools. Par exemple, la commande suivante retourne un objet DateTime comme 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 d’AppPool
Il existe deux méthodes de base pour apporter des modifications.
- Si vous modifiez une propriété simple, utilisez Set-ItemProperty.
- Si vous traitez une collection et que vous souhaitez ajouter une nouvelle entrée de collection, 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 désormais également à l’écoute sur le port 8081.
Utilisez Set-ItemProperty si vous souhaitez modifier une propriété existante. Par exemple, modifions le nom du site :
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. Nous devons d’abord créer un utilisateur. Pour cela, utilisons ADSI :
$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 que cet utilisateur :
Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}
À des fins d’extensibilité, nous utilisons une bonne vieille table de hachage pour les noms de propriétés et leurs valeurs. Si vous avez oublié comment l’utiliser, suivez ce lien.
Set-Item et Get-Item
Nous allons faire la même chose, c’est-à-dire affecter un utilisateur à un pool d’applications, avec la combinaison Set-Item/Get-Item. Cette variante vous plaira peut-être davantage, car elle vous permet de bénéficier de la saisie semi-automatique de la ligne de commande. Pour voir comment cela fonctionne, ne faites pas un copier/coller des commandes suivantes. Entrez quelques caractères et utilisez la touche TAB pour profiter des avantages de la saisie semi-automatique de la 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 des sites et des pools d’applications. Vous avez appris à utiliser des tables de hachage et à tirer parti de la saisie semi-automatique de la ligne de commande. Dans la procédure pas à pas suivante, vous allez apprendre à utiliser les applets de commande du composant logiciel enfichable IIS pour modifier la configuration de paramètres de configuration IIS qui ne sont pas exposés via l’espace de noms du composant logiciel enfichable IIS.