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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow