PowerShell
Erstellen von klassenbasierten DSC-Ressourcen
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
KeyDSC-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.