Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Windows PowerShell 4.0, Windows PowerShell 5.0
Les configurations DSC sont des scripts PowerShell qui définissent un type de fonction spécial. Pour définir une configuration, vous utilisez le mot-clé PowerShell Configuration.
Configuration MyDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance {
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Enregistrez le script en tant que .ps1 fichier.
Syntaxe de configuration
Un script de configuration se compose des éléments suivants :
- Le bloc Configuration . Il s’agit du bloc de script le plus externe. Vous le définissez à l’aide du mot-clé Configuration et en fournissant un nom. Dans ce cas, le nom de la configuration est
MyDscConfiguration. - Un ou plusieurs blocs Node . Ceux-ci définissent les nœuds (ordinateurs ou machines virtuelles) que vous configurez.
Dans la configuration ci-dessus, il y a un bloc Node qui cible un ordinateur nommé
TEST-PC1. Le bloc Node peut accepter plusieurs noms d’ordinateur. - Un ou plusieurs blocs de ressources. C’est là que la configuration définit les propriétés des ressources qu’elle configure. Dans ce cas, il existe deux blocs de ressources, chacun appelant la ressource WindowsFeature .
Note
La ressource DSC WindowsFeature n’est disponible que sur les ordinateurs Windows Server. Pour les ordinateurs dotés d’un système d’exploitation client, comme Windows 11, vous devez utiliser WindowsOptionalFeature à la place. Pour plus d’informations, consultez la section « WindowsOptionalFeature » de la documentation PSDscResources.
Dans un bloc Configuration , vous pouvez faire tout ce que vous pourriez normalement faire dans une fonction PowerShell. Dans l’exemple précédent, si vous ne souhaitez pas coder en dur le nom de l’ordinateur cible dans la configuration, vous pouvez ajouter un paramètre pour le nom du nœud.
Dans cet exemple, vous spécifiez le nom du nœud en le transmettant en tant que paramètre ComputerName lors de la compilation de la configuration. Le nom est défini par défaut sur localhost.
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName='localhost'
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Le bloc Node peut également accepter plusieurs noms d’ordinateurs. Dans l’exemple ci-dessus, vous pouvez soit utiliser le -ComputerName paramètre, soit passer une liste d’ordinateurs séparés par des virgules directement au bloc Node .
MyDscConfiguration -ComputerName "localhost", "Server01"
Lorsque vous spécifiez une liste d’ordinateurs pour le bloc Node , à partir d’une configuration, vous devez utiliser la notation de tableau.
Configuration MyDscConfiguration
{
Node @('localhost', 'Server01')
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Compilation de la configuration
Avant de pouvoir mettre en œuvre une configuration, vous devez la compiler dans un document MOF. Pour ce faire, vous appelez la configuration comme vous appelleriez une fonction PowerShell. La dernière ligne de l’exemple contenant uniquement le nom de la configuration, appelle la configuration.
Note
Pour appeler une configuration, la fonction doit être dans l’étendue globale (comme avec toute autre fonction PowerShell). Vous pouvez y parvenir soit en « dot-sourcing » du script, soit en exécutant le script de configuration à l’aide de F5 ou en cliquant sur le bouton Exécuter le script dans l’ISE. Pour dot-source le script, exécutez la commande . .\myConfig.ps1 où myConfig.ps1 est le nom du fichier de script qui contient votre configuration.
Lorsque vous appelez la configuration, elle :
- Résout toutes les variables
- Crée un dossier dans le répertoire courant portant le même nom que la configuration.
- Crée un fichier nommé NodeName.mof dans le nouveau répertoire, où NodeName est le nom du nœud cible de la configuration. S’il y a plus d’un nœud, un fichier MOF sera créé pour chaque nœud.
Note
Le fichier MOF contient toutes les informations de configuration du nœud cible. Pour cette raison, il est important de le garder en sécurité. Pour plus d’informations, consultez Sécurisation du fichier MOF.
La compilation de la première configuration ci-dessus permet d’obtenir la structure de dossiers suivante :
. .\MyDscConfiguration.ps1
MyDscConfiguration
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 localhost.mof
Si la configuration prend un paramètre, comme dans le deuxième exemple, qui doit être fourni au moment de la compilation. Voici à quoi cela ressemblerait :
. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 MyTestNode.mof
Utilisation de nouvelles ressources dans votre configuration
Si vous avez exécuté les exemples précédents, vous avez peut-être remarqué que vous avez été averti que vous utilisiez une ressource sans l’importer explicitement. Aujourd’hui, DSC est livré avec 12 ressources dans le cadre du module PSDesiredStateConfiguration.
L’applet de commande Get-DscResource peut être utilisée pour déterminer quelles ressources sont installées sur le système et disponibles pour être utilisées par le LCM.
Une fois que ces modules ont été placés $env:PSModulePath et sont correctement reconnus par Get-DscResource, ils doivent encore être chargés dans votre configuration.
Import-DscResource est un mot-clé dynamique qui ne peut être reconnu que dans un bloc de configuration , il ne s’agit pas d’une applet de commande. Import-DscResource prend en charge deux paramètres :
- ModuleName est la méthode recommandée d’utilisation de Import-DscResource. Il accepte le nom du module qui contient les ressources à importer (ainsi qu’un tableau de chaînes de noms de modules).
- Nom est le nom de la ressource à importer. Il ne s’agit pas du nom convivial renvoyé en tant que « Nom » par Get-DscResource, mais du nom de classe utilisé lors de la définition du schéma de ressource (renvoyé en tant que ResourceType par Get-DscResource).
Pour plus d’informations sur l’utilisation de Import-DSCResource, reportez-vous à la section Utilisation de Import-DSCResource
Différences entre PowerShell v4 et v5
Il existe des différences dans l’emplacement de stockage des ressources DSC dans PowerShell 4.0. Pour plus d’informations, consultez Emplacement de la ressource.