Composant logiciel enfichable PowerShell : modification des paramètres simples dans les sections de configuration
par Thomas Deml
Dans la procédure pas à pas précédente, vous avez appris à gérer des conteneurs d’espaces de noms IIS tels que sites, pools d’applications, applications et répertoires virtuels.
Dans cette procédure pas à pas, nous allons gérer les paramètres de configuration qui ne sont pas exposés via l’espace de noms IIS.
Introduction
Il existe plusieurs cmdlets qui vous permettent de modifier les paramètres IIS non configurables via l’espace de noms IIS, c’est-à-dire que vous ne pouvez pas utiliser les cmdlets intégrées pour les modifier. Vous devez utiliser les cmdlets fournies par IIS à la place. Cette procédure pas à pas s’appuie sur le site, les applications et les répertoires virtuels que nous avons créés dans les procédures pas à pas précédentes.
Get-WebConfiguration et Get-WebConfigurationProperty
Get-WebConfiguration et Get-WebConfigurationProperty vous permettent d’obtenir des sections de configuration IIS. Ils sont très similaires à Get-Item et Get-ItemProperty. Quand Get-Item* fonctionne uniquement sur les conteneurs d’espaces de noms (Sites, Applications, AppPools, VDirs), Get-WebConfiguration* fonctionne sur n’importe quelle section de configuration IIS.
Interrogation des paramètres de configuration
Examinons les paramètres de la section directoryBrowse activés sur l’application DemoApp que nous avons créée précédemment. Tout d’abord, nous accédons au dossier DemoApp, puis nous interrogeons les paramètres d’authentification dans ce dossier. Voici la marche à suivre :
PS IIS:\> cd IIS:\Sites\DemoSite\DemoApp
PS IIS:\Sites\DemoSite\DemoApp> dir
Type Name Physical Path
---- ---- -------------
file Default.htm C:\DemoSite\DemoApp\Default.htm
virtualDirectory DemoVirtualDir2 C:\DemoSite\DemoVirtualDir2
Dans l’exemple suivant, nous utilisons le paramètre -filter pour spécifier la section de configuration qui nous intéresse et le paramètre -name pour spécifier la propriété à examiner. Si vous souhaitez afficher les paramètres d’une section qui n’est pas l’emplacement actuel, vous pouvez utiliser la propriété -PSPath en haut de celle-ci. Voici un exemple de la façon d’interroger les paramètres d’exploration des répertoires sur le site web par défaut :
Get-WebConfigurationProperty -filter /system.webServer/directoryBrowse -name enabled -PSPath 'IIS:\Sites\Default Web Site'
ItemXPath : /system.webServer/directoryBrowse
IsInheritedFromDefaultValue : False
IsProtected : False
Name : enabled
TypeName : System.Boolean
Schema : Microsoft.IIs.PowerShell.Framework.ConfigurationAttributeSchema
Value : False
IsExtended : False
Utilisation de Set-WebConfigurationProperty
Pour modifier le paramètre, rien de plus simple :
Gestion des sections verrouillées
Il y a un problème. Les sections d’authentification sont généralement verrouillées, c’est-à-dire qu’elles ne peuvent pas être écrites dans un fichier web.config, mais doivent être écrites dans le fichier applicationhost.config central à la place. L’utilisation de la commande ci-dessus pour activer WindowsAuthentication échouerait avec une violation de verrouillage :
PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true
Set-WebConfigurationProperty : This configuration section cannot be used at this path. This happens
when the section is locked at a parent level. Locking is either by default (overrideModeDefault="D
eny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="fa
lse".
At line:1 char:29
+ Set-WebConfigurationProperty <<<< -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true
Ici, vous devez utiliser le paramètre -PSPath et -location. La commande suivante active l’authentification Windows pour l’application DemoApp. La configuration est écrite dans applicationhost.config, mais à l’aide d’une balise d’emplacement. Cliquez ici pour trouver plus d’informations sur les balises de verrouillage et d’emplacement.
PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp
Toutefois, vous n’avez pas besoin de spécifier des emplacements lors de l’interrogation de la configuration. La commande Get-WebConfigurationProperty standard vous indique que le paramètre est activé.
PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled
True
Get-WebConfiguration vs. Get-WebConfigurationProperty
La même chose s’applique à Get-Item vs. Get-ItemProperty dans l’exemple précédent. Get-WebConfiguration obtient la section entière au lieu d’une propriété uniquement. Cela vous permet de stocker la section dans une variable, d’apporter des modifications aux propriétés de section et d’enregistrer la section via Set-WebConfiguration. Et vous bénéficiez de l’achèvement des commandes.
Voici un exemple. Ne faites pas un simple copier-coller. Explorez les propriétés de la section windowsAuthentication. Tapez $winAuth. et appuyez sur la touche <TAB> pour propager l’itération dans les propriétés et fonctions disponibles.
PS IIS:\Sites\DemoSite\DemoApp> $winAuth = Get-WebConfiguration -filter /system.webServer/security/authentication/windowsAuthentication
PS IIS:\Sites\DemoSite\DemoApp> $winAuth.enabled = $false
PS IIS:\Sites\DemoSite\DemoApp> $winAuth | set-Webconfiguration -filter /system.webServer/security/authentication/windowsAuthentication -PSPath IIS:\ -location "DemoSite/DemoApp"
Add-WebConfiguration
Add-WebConfiguration est la cmdlet à utiliser pour ajouter quelque chose à une collection de configuration IIS. Gestionnaires, modules, paramètres de document par défaut et autres exemples où IIS utilise une collection pour stocker plusieurs valeurs.
Voici un exemple d’ajout d’un nouveau document par défaut à la collection de documents par défaut DemoApp :
PS IIS:\Sites\DemoSite\DemoApp>Add-WebConfiguration /system.webServer/defaultDocument/files "IIS:\sites\Default Web Site" -at 0 -value
@{value="new-index.html"}
L’exemple utilise le paramètre supplémentaire -at. Cela vous permet de spécifier où vous souhaitez ajouter la nouvelle valeur dans la collection. 0 est au début ; -1 spécifie la fin.
Résumé
Dans cette procédure pas à pas, vous avez appris à utiliser les cmdlets de configuration web fournies par IIS. Vous avez appris à interroger des paramètres de configuration, à configurer des paramètres à l’aide de balises d’emplacement, à tirer parti de la saisie semi-automatique de ligne de commande et à ajouter des entrées à des regroupements.
Dans la procédure pas à pas suivante, vous allez apprendre à accomplir certaines tâches de configuration complexes à l’aide de fonctionnalités avancées du fournisseur IIS telles que globbing et XPath.