PowerShell
Skapa DSC-klassbaserade resurser
Sök…
Introduktion
Börjar med PowerShell version 5.0, kan du använda PowerShell-klassdefinitioner för att skapa DSC-resurser (Desired State Configuration).
För att hjälpa till att bygga DSC Resource finns det ett [DscResource()] -attribut som tillämpas på klassdefinitionen och en [DscProperty()] resurs för att utse egenskaper som kan konfigureras av DSC Resource-användaren.
Anmärkningar
En klassbaserad DSC-resurs måste:
-
[DscResource()]attributet[DscResource()] - Definiera en
Test()som returnerar[bool] - Definiera en
Get()-metod som returnerar sin egen objekttyp (t.ex.[Ticket]) - Definiera en
Set()-metod som returnerar[void] - Minst en
KeyDSC-egenskap
När du har skapat en klassbaserad PowerShell DSC-resurs måste den "exporteras" från en modul med en modulmanifest (.psd1) -fil. Inom DscResourcesToExport används DscResourcesToExport nyckeln DscResourcesToExport för att förklara en rad DSC-resurser (klassnamn) för att "exportera" från modulen. Detta gör det möjligt för konsumenter av DSC-modulen att "se" de klassbaserade resurserna i modulen.
Skapa en DSC Resource Skeleton Class
[DscResource()]
class File {
}
Detta exempel visar hur man bygger den yttre delen av en PowerShell-klass, som förklarar en DSC-resurs. Du måste fortfarande fylla i innehållet i klassdefinitionen.
DSC resursskelett med nyckelegenskap
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
}
En DSC-resurs måste deklarera minst en nyckelegenskap. Den viktigaste egenskapen är det som unikt identifierar resursen från andra resurser. Låt oss till exempel säga att du bygger en DSC-resurs som representerar en biljett i ett biljetteringssystem. Varje biljett skulle vara unikt representerat med ett biljett-ID.
Varje egenskap som kommer att exponeras för användaren av DSC Resource måste dekoreras med [DscProperty()] . Dessa attribut accepterar en key att indikera att egenskapen är ett nyckelattribut för DSC-resursen.
DSC-resurs med obligatorisk egendom
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
[DscProperty(Mandatory)]
[string] $Subject
}
När du bygger en DSC-resurs kommer du ofta att upptäcka att inte varje enskild egendom bör vara obligatorisk. Det finns dock några kärnegenskaper som du vill se till är konfigurerade av användaren av DSC-resursen. Du använder den Mandatory parametern i [DscResource()] att deklarera en egenskap som krävs av DSC Resource-användare.
I exemplet ovan har vi lagt till en Subject egenskap till en Ticket , som representerar en unik biljett i ett biljettsystem och betecknat den som en Mandatory egenskap.
DSC-resurs med nödvändiga metoder
[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
}
}
Detta är en komplett DSC-resurs som visar alla grundläggande krav för att bygga en giltig resurs. Metodimplementeringarna är inte fullständiga, men har för avsikt att visa grundstrukturen.