Ressources DSC

S’applique à la version 4.0 de Windows PowerShell et aux versions ultérieures.

Vue d’ensemble

Les ressources de configuration de l’état souhaité (DSC) fournissent les éléments de base d’une configuration DSC. Une ressource expose les propriétés qui peuvent être configurées (schéma) et contient les fonctions de script PowerShell que le gestionnaire de configuration local appelle pour l’exécution.

Une ressource peut modéliser un élément générique comme un fichier ou spécifique comme un paramètre de serveur IIS. Les groupes de ce type de ressources sont combinés dans un module DSC qui organise tous les fichiers nécessaires dans une structure portable incluant les métadonnées permettant d’identifier la façon dont sont utilisées les ressources.

Chaque ressource comporte un *schéma qui détermine la syntaxe nécessaire pour utiliser la ressource dans une configuration. Le schéma d’une ressource peut être défini comme suit :

  • Fichier Schema.Mof : La plupart des ressources définissent leur schéma dans un fichier schema.mof à l’aide de Managed Object Format.
  • Fichier <Resource Name>.schema.psm1 : Les ressources composites définissent leur schéma dans un fichier <ResourceName>.schema.psm1 à l’aide d’un bloc de paramètres.
  • Fichier <Resource Name>.psm1 : Les ressources DSC basées sur la classe définissent leur schéma dans la définition de classe. Les éléments de syntaxe sont signalés en tant que propriétés de classe. Pour plus d’informations, consultez about_Classes.

Pour récupérer la syntaxe d’une ressource DSC, utilisez l’applet de commande Get-DSCResource avec le paramètre Syntax. Cette méthode est similaire à l’utilisation de Get-Command avec le paramètre Syntax pour obtenir la syntaxe de l’applet de commande. Le résultat affichera le modèle utilisé pour un bloc de ressources correspondant à la ressource que vous spécifiez.

Get-DscResource -Syntax Service

Le résultat devrait être similaire à ce qui suit, même si la syntaxe de la ressource risque de change à l’avenir. Comme dans la syntaxe de l’applet de commande, les clés affichées entre crochets sont facultatives. Les types spécifient le type de données attendu par chaque clé.

Notes

La clé Ensure (garantir) est facultative car les valeurs par défaut sont définies sur « Present ».

Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Running | Stopped }]
}

Notes

Dans les versions de PowerShell inférieures à 7.0, Get-DscResource ne trouve pas les ressources DSC basées sur une classe.

Dans une configuration, un bloc de ressources Service peut ressembler à ceci pour garantir que le service Spooler est en cours d’exécution.

Notes

Avant d’utiliser une ressource dans une configuration, vous devez l’importer à l’aide d’Import-DSCResource.

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as l
        # ong as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }
    }
}

Les configurations peuvent contenir plusieurs instances du même type de ressource. Chaque instance doit afficher un nom unique. Dans l’exemple suivant, un second bloc de ressources Service est ajouté pour configurer le service « DHCP ».

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as
        # long as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }

        # To configure a second service resource block, add another Service
        # resource block and use a unique name.
        Service "DHCP - Running"
        {
            Name = "DHCP"
            State = "Running"
        }
    }
}

Notes

À compter de PowerShell 5.0, IntelliSense a été ajouté pour DSC. Cette nouvelle fonctionnalité permet d’utiliser les touches Tab et Ctrl+Espace pour l’autocomplétion des noms de clés.

Ressource IntelliSense qui utilise la complétion avec la touche Tab

Types de ressources

Windows est fourni avec des ressources intégrées et Linux possède des ressources propres au système d’exploitation. Il existe des ressources pour les dépendances inter-nœuds, des ressources de gestion des packages, ainsi que des ressources détenues et gérées par la communauté. Vous pouvez suivre les étapes ci-dessus pour déterminer la syntaxe de ces ressources et savoir comment les utiliser. Les pages qui utilisent ces ressources ont été archivées sous Référence.

Ressources intégrées Windows

Ressources de dépendance entre les nœuds

Ressources Package Management

Ressources Linux