Ressources DSC

Vue d’ensemble

Les ressources DSC fournissent une interface standardisée pour la gestion des paramètres d’un système. Une ressource DSC définit les propriétés que vous pouvez gérer et contient le code PowerShell qui Invoke-DscResource appelle pour « le faire ».

Une ressource DSC peut modéliser quelque chose d’aussi générique qu’un fichier ou spécifique comme un paramètre de serveur IIS. Les groupes de ressources DSC associées sont combinés en modules PowerShell. Les modules fournissent un package portable avec version pour les ressources DSC et incluent des métadonnées et de la documentation à leur sujet.

Chaque ressource DSC a un schéma qui détermine la syntaxe nécessaire pour utiliser la ressource DSC avec Invoke-DscResource ou dans une configuration. Le schéma d’une ressource DSC est défini de la manière suivante :

  • <Resource Name>.psm1 file : les ressources DSC basées sur des classes définissent leur schéma dans la définition de classe. Les éléments de syntaxe sont indiqués en tant que propriétés de classe. Pour plus d’informations, consultez about_Classes.
  • Schema.Mof fichier : les ressources DSC basées sur MOF définissent leur schéma dans un schema.mof fichier, à l’aide du format d’objet managé.

Pour récupérer la syntaxe d’une ressource DSC, utilisez l’applet de commande Get-DSCResource avec le paramètre Syntax . Cela ressemble à l’utilisation de Get-Command avec le paramètre Syntax pour obtenir la syntaxe de l’applet de commande. La sortie montre le modèle utilisé pour un bloc de ressources DSC dans une configuration DSC.

Get-DscResource -Syntax Service
Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DesktopInteract = [bool]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupTimeout = [UInt32]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Ignore | Running | Stopped }]
    [TerminateTimeout = [UInt32]]
}

Comme la syntaxe d’applet de commande, les clés entre crochets sont facultatives. Les types spécifient le type de données attendu par chaque clé.

Pour vous assurer que le Spooler service est en cours d’exécution :

$SharedDscParameters = @{
    Name = 'Service'
    ModuleName = 'PSDscResources'
    Property = @{
        Name  = 'Spooler'
        State = 'Running'
    }
}
$TestResult = Invoke-DscResource -Method Test @SharedDscParameters
if ($TestResult.InDesiredState) {
    Write-Host -ForegroundColor Cyan -Object 'Already in desired state.'
} else {
    Write-Host -ForegroundColor Magenta -Object 'Enforcing desired state.'
    Invoke-DscResource -Method Set @SharedDscParameters
}

La $SharedDscParameters variable est une table de hachage contenant les paramètres utilisés lors de l’appel des méthodes Test et Set de la ressource avec Invoke-DscResource. Le premier appel à Invoke-DscResource utilise la méthode Test pour vérifier si le Spooler service est en cours d’exécution et stocke le résultat dans la $TestResult variable.

L’étape suivante dépend si le service est déjà dans l’état souhaité. Il est recommandé de toujours vérifier l’état souhaité avant d’appliquer et d’appeler la méthode Set uniquement si nécessaire. Dans l’exemple, le script écrit un message dans la console indiquant si la ressource DSC est dans l’état souhaité. Ensuite, si le service n’est pas en cours d’exécution, il appelle Invoke-DscResource avec la méthode Set pour appliquer l’état souhaité.