Zoeken…


Invoering

Vanaf PowerShell versie 5.0 kunt u PowerShell-klassedefinities gebruiken om DSC-bronnen (Desired State Configuration) te maken.

Om te helpen bij het bouwen van DSC Resource, is er een [DscResource()] -attribuut dat wordt toegepast op de klassedefinitie, en een [DscProperty()] om eigenschappen aan te [DscProperty()] die door de gebruiker van de DSC Resource kunnen worden geconfigureerd.

Opmerkingen

Een op klassen gebaseerde DSC-bron moet:

  • [DscResource()] kenmerk [DscResource()]
  • Definieer een Test() -methode die [bool] retourneert
  • Definieer een Get() -methode die zijn eigen objecttype retourneert (bijv. [Ticket] )
  • Definieer een methode Set() die [void] retourneert
  • Ten minste één Key DSC-eigenschap

Nadat u een op klasse gebaseerde PowerShell DSC-bron hebt gemaakt, moet deze vanuit een module worden "geëxporteerd" met behulp van een module-manifestbestand (.psd1). Binnen het module-manifest wordt de hashtable-sleutel DscResourcesToExport gebruikt om een reeks DSC-bronnen (klassenamen) te declareren om te "exporteren" vanuit de module. Hierdoor kunnen consumenten van de DSC-module de op klassen gebaseerde bronnen in de module "zien".

Maak een DSC Resource Skeleton Class

[DscResource()]
class File {
}

Dit voorbeeld laat zien hoe u de buitenste sectie van een PowerShell-klasse kunt bouwen, die een DSC-bron aangeeft. U moet nog steeds de inhoud van de klassedefinitie invullen.

DSC Resource Skeleton met Key Property

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

Een DSC-bron moet ten minste één sleuteleigenschap declareren. De belangrijkste eigenschap is wat de bron op unieke wijze identificeert uit andere bronnen. Laten we bijvoorbeeld zeggen dat u een DSC-bron bouwt die een ticket in een ticketingsysteem vertegenwoordigt. Elk ticket zou uniek worden weergegeven met een ticket-ID.

Elke eigenschap die wordt [DscProperty()] aan de gebruiker van de DSC-bron moet worden versierd met het [DscProperty()] . Deze kenmerken accepteren een key om aan te geven dat de eigenschap een sleutelkenmerk is voor de DSC-bron.

DSC-bron met verplichte eigenschap

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

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

Bij het bouwen van een DSC-bron zult u vaak merken dat niet elke eigenschap verplicht moet zijn. Er zijn echter enkele kerneigenschappen waarvan u wilt zorgen dat deze worden geconfigureerd door de gebruiker van de DSC Resource. U gebruikt de parameter Mandatory van het [DscResource()] om een eigenschap aan te geven zoals vereist door de gebruiker van de DSC Resource.

In het bovenstaande voorbeeld hebben we een toegevoegde Subject woning aan een Ticket bron, die een uniek ticket in een ticketing systeem vertegenwoordigt, en is aangewezen als een Mandatory eigenschap.

DSC-bron met vereiste 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
  }
}

Dit is een complete DSC-bron die alle kernvereisten toont om een geldige bron te bouwen. De implementaties van de methode zijn niet compleet, maar zijn bedoeld om de basisstructuur te tonen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow