PowerShell
Op DSC-klasse gebaseerde bronnen maken
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.