Recherche…


Introduction

À partir de PowerShell version 5.0, vous pouvez utiliser les définitions de classe PowerShell pour créer des ressources DSC (Desired State Configuration).

Pour vous aider à créer une ressource DSC, il existe un [DscResource()] appliqué à la définition de classe et une [DscProperty()] pour désigner les propriétés configurables par l'utilisateur de ressource DSC.

Remarques

Une ressource DSC basée sur une classe doit:

  • Être décoré avec l' [DscResource()]
  • Définir une méthode Test() qui retourne [bool]
  • Définissez une méthode Get() qui renvoie son propre type d'objet (par exemple, [Ticket] )
  • Définir une méthode Set() qui renvoie [void]
  • Au moins une propriété DSC Key

Après avoir créé une ressource DSC PowerShell basée sur une classe, celle-ci doit être "exportée" d'un module à l'aide d'un fichier de manifeste de module (.psd1). Dans le manifeste de module, la DscResourcesToExport hachage DscResourcesToExport est utilisée pour déclarer un tableau de ressources DSC (noms de classe) à "exporter" à partir du module. Cela permet aux consommateurs du module DSC de "voir" les ressources basées sur les classes à l'intérieur du module.

Créer une classe de squelette de ressource DSC

[DscResource()]
class File {
}

Cet exemple montre comment créer la section externe d'une classe PowerShell, qui déclare une ressource DSC. Vous devez toujours remplir le contenu de la définition de classe.

Squelette de ressource DSC avec propriété de clé

[DscResource()]
class Ticket {
  [DscProperty(Key)]
  [string] $TicketId
}

Une ressource DSC doit déclarer au moins une propriété clé. La propriété clé est ce qui identifie de manière unique la ressource des autres ressources. Par exemple, supposons que vous construisiez une ressource DSC qui représente un ticket dans un système de tickets. Chaque ticket serait représenté de manière unique avec un identifiant de ticket.

Chaque propriété qui sera exposée à l' utilisateur de la ressource DSC doit être décorée avec l' [DscProperty()] . Cet attribut accepte un paramètre key pour indiquer que la propriété est un attribut clé de la ressource DSC.

Ressource DSC avec propriété obligatoire

[DscResource()]
class Ticket {
  [DscProperty(Key)]
  [string] $TicketId

  [DscProperty(Mandatory)]
  [string] $Subject
}

Lors de la création d'une ressource DSC, vous constaterez souvent que chaque propriété ne doit pas nécessairement être obligatoire. Toutefois, vous devez vous assurer que certaines propriétés principales sont configurées par l'utilisateur de la ressource DSC. Vous utilisez le paramètre Mandatory de l' [DscResource()] pour déclarer une propriété comme requis par l'utilisateur de la ressource DSC.

Dans l'exemple ci-dessus, nous avons ajouté une propriété Subject à une ressource Ticket , qui représente un ticket unique dans un système de tickets et l'a désignée comme une propriété Mandatory .

Ressource DSC avec les méthodes requises

[DscResource()]
class Ticket {
  [DscProperty(Key)]
  [string] $TicketId

  # The subject line of the ticket
  [DscProperty(Mandatory)]
  [string] $Subject

  # Get / Set if ticket should be open or closed
  [DscProperty(Mandatory)]
  [string] $TicketState

  [void] Set() {
    # Create or update the resource
  }

  [Ticket] Get() {
    # Return the resource's current state as an object
    $TicketState = [Ticket]::new()
    return $TicketState
  }

  [bool] Test() {
    # Return $true if desired state is met
    # Return $false if desired state is not met
    return $false
  }
}

Il s'agit d'une ressource DSC complète qui illustre toutes les exigences de base pour créer une ressource valide. Les implémentations de méthode ne sont pas complètes, mais sont fournies dans le but de montrer la structure de base.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow