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
Key
DSC-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.