Suche…


Einführung

Ab PowerShell Version 5.0 können Sie PowerShell-Klassendefinitionen zum Erstellen von DSC-Ressourcen (Desired State Configuration) verwenden.

Für die [DscResource()] DSC-Ressourcen gibt es ein [DscResource()] Attribut, das auf die Klassendefinition angewendet wird, und eine [DscProperty()] Ressource, um die vom DSC-Ressourcenbenutzer konfigurierbaren Eigenschaften [DscProperty()] .

Bemerkungen

Eine klassenbasierte DSC-Ressource muss:

  • Mit dem Attribut [DscResource()]
  • Definieren Sie eine Test() Methode, die [bool] zurückgibt.
  • Definieren Sie eine Get() Methode, die ihren eigenen Objekttyp zurückgibt (z. B. [Ticket] ).
  • Definieren Sie eine Set() Methode, die [void] zurückgibt.
  • Mindestens eine Key DSC-Eigenschaft

Nach dem Erstellen einer klassenbasierten PowerShell DSC-Ressource muss diese aus einem Modul mithilfe einer Modulmanifestdatei (.psd1) "exportiert" werden. Innerhalb des DscResourcesToExport wird der DscResourcesToExport verwendet, um ein Array von DSC-Ressourcen (Klassennamen) für das Exportieren aus dem Modul zu deklarieren. Dadurch können Konsumenten des DSC-Moduls die klassenbasierten Ressourcen innerhalb des Moduls "sehen".

Erstellen Sie eine DSC-Ressource-Skeleton-Klasse

[DscResource()]
class File {
}

In diesem Beispiel wird veranschaulicht, wie der äußere Abschnitt einer PowerShell-Klasse erstellt wird, die eine DSC-Ressource deklariert. Sie müssen noch den Inhalt der Klassendefinition ausfüllen.

DSC-Ressourcenskelett mit Schlüsseleigenschaft

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

Eine DSC-Ressource muss mindestens eine Schlüsseleigenschaft deklarieren. Die Schlüsseleigenschaft identifiziert die Ressource eindeutig von anderen Ressourcen. Angenommen, Sie erstellen eine DSC-Ressource, die ein Ticket in einem Ticketsystem darstellt. Jedes Ticket würde eindeutig mit einer Ticket-ID dargestellt.

Jede Eigenschaft, die dem Benutzer der DSC-Ressource [DscProperty()] muss mit dem Attribut [DscProperty()] werden. Dieses Attribut akzeptiert einen key , um anzuzeigen, dass die Eigenschaft ein Schlüsselattribut für die DSC-Ressource ist.

DSC-Ressource mit obligatorischer Eigenschaft

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

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

Beim Erstellen einer DSC-Ressource werden Sie häufig feststellen, dass nicht jede einzelne Eigenschaft obligatorisch sein sollte. Es gibt jedoch einige grundlegende Eigenschaften, die Sie sicherstellen möchten, dass sie vom Benutzer der DSC-Ressource konfiguriert werden. Sie verwenden den Parameter Mandatory des Attributs [DscResource()] , um eine Eigenschaft zu deklarieren, die der Benutzer der DSC-Ressource benötigt.

Im obigen Beispiel haben wir einer Ticket Ressource, die ein eindeutiges Ticket in einem Ticketsystem darstellt, eine Subject Eigenschaft hinzugefügt und diese als Mandatory Eigenschaft festgelegt.

DSC-Ressource mit erforderlichen Methoden

[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
  }
}

Dies ist eine vollständige DSC-Ressource, die alle wesentlichen Anforderungen zum Erstellen einer gültigen Ressource veranschaulicht. Die Methodenimplementierungen sind nicht vollständig, sondern sollen die Grundstruktur aufzeigen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow