DSC-configuraties
Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0
DSC-configuraties zijn PowerShell-scripts die een speciaal type functie definiëren. Als u een configuratie wilt definiëren, gebruikt u het PowerShell-trefwoord Configuratie.
Configuration MyDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance {
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Sla het script op als een .ps1 bestand.
Configuratiesyntaxis
Een configuratiescript bestaat uit de volgende onderdelen:
- Het blok Configuratie. Dit is het buitenste scriptblok. U definieert deze met behulp van het trefwoord Configuratie en geeft een naam op. In dit geval is de naam van de configuratie 'MyDscConfiguration'.
- Een of meer knooppuntblokken. Hiermee worden de knooppunten (computers of VM's) die u configureert, bepaald. In de bovenstaande configuratie is er één knooppuntblok dat is gericht op een computer met de naam TEST-PC1. Het knooppuntblok kan meerdere computernamen accepteren.
- Een of meer resourceblokken. Hier stelt de configuratie de eigenschappen in voor de resources die worden geconfigureerd. In dit geval zijn er twee resourceblokken, die elk de resource WindowsFeature aanroepen.
Binnen een configuratieblok kunt u alles doen wat u normaal gesproken in een PowerShell-functie zou kunnen doen. Als u in het vorige voorbeeld bijvoorbeeld de naam van de doelcomputer in de configuratie niet wilt codeeren, kunt u een parameter toevoegen voor de naam van het knooppunt:
In dit voorbeeld geeft u de naam van het knooppunt op door het door te geven als de parameter ComputerName wanneer u de configuratie compileert. De naam wordt standaard ingesteld op 'localhost'.
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName='localhost'
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Het knooppuntblok kan ook meerdere computernamen accepteren. In het bovenstaande voorbeeld kunt u de parameter gebruiken of een door komma's gescheiden lijst met computers rechtstreeks doorgeven -ComputerName aan het knooppuntblok.
MyDscConfiguration -ComputerName "localhost", "Server01"
Wanneer u een lijst met computers opgeeft in het knooppuntblok, moet u vanuit een configuratie matrix-notatie gebruiken.
Configuration MyDscConfiguration
{
Node @('localhost', 'Server01')
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
De configuratie compileren
Voordat u een configuratie kunt opstellen, moet u deze compileren in een MOF-document. U doet dit door de configuratie aan te roepen zoals u een PowerShell-functie zou aanroepen. De laatste regel van het voorbeeld die alleen de naam van de configuratie bevat, roept de configuratie aan.
Notitie
Als u een configuratie wilt aanroepen, moet de functie zich in het globale bereik (net als bij elke andere PowerShell-functie) hebben. U kunt dit doen door het script 'dot-sourcing' te gebruiken, of door het configuratiescript uit te voeren met behulp van F5 of door te klikken op de knop Script uitvoeren in de ISE. Als u het script een dot-source wilt geven, moet u de opdracht uitvoeren waarbij de naam is van . .\myConfig.ps1 myConfig.ps1 het scriptbestand dat uw configuratie bevat.
Wanneer u de configuratie aanroept, gebeurt het volgende:
- Lost alle variabelen op
- Hiermee maakt u een map in de huidige map met dezelfde naam als de configuratie.
- Hiermee maakt u een bestand met de naam NodeName.mof in de nieuwe map, waarbij NodeName de naam is van het doel-knooppunt van de configuratie. Als er meer dan één knooppunt is, wordt voor elk knooppunt een MOF-bestand gemaakt.
Notitie
Het MOF-bestand bevat alle configuratiegegevens voor het doel-knooppunt. Daarom is het belangrijk om het veilig te houden. Zie Het MOF-bestand beveiligen voor meer informatie.
Het compileren van de eerste configuratie hierboven resulteert in de volgende mapstructuur:
. .\MyDscConfiguration.ps1
MyDscConfiguration
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 localhost.mof
Als voor de configuratie een parameter wordt gebruikt, zoals in het tweede voorbeeld, moet deze worden opgegeven tijdens het compileren. Dit ziet er als volgende uit:
. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 MyTestNode.mof
Nieuwe resources gebruiken in Uw configuratie
Als u de vorige voorbeelden hebt gemaakt, hebt u mogelijk opgemerkt dat u een resource gebruikte zonder deze expliciet te importeren. Vandaag de dag wordt DSC geleverd met 12 resources als onderdeel van de PSDesiredStateConfiguration-module.
De cmdlet Get-DscResourcekan worden gebruikt om te bepalen welke resources op het systeem zijn geïnstalleerd en beschikbaar zijn voor gebruik door de LCM.
Zodra deze modules in zijn geplaatst en correct worden herkend door $env:PSModulePath Get-DscResource,moeten ze nog steeds worden geladen in uw configuratie.
Import-DscResource is een dynamisch trefwoord dat alleen kan worden herkend in een configuratieblok. Het is geen cmdlet. Import-DscResource ondersteunt twee parameters:
- ModuleName is de aanbevolen manier om te
Import-DscResourcegebruiken. Het accepteert de naam van de module die de resources bevat die moeten worden geïmporteerd (evenals een tekenreeksreeks met modulenamen). - Naam is de naam van de resource die moet worden geïmporteerd. Dit is niet de beschrijvende naam die wordt geretourneerd als 'Naam' door Get-DscResource,maar de klassenaam die wordt gebruikt bij het definiëren van het resourceschema (geretourneerd als ResourceType door Get-DscResource).
Zie Using Import-DSCResource Import-DSCResource (Import-DSCResource gebruiken) voor meer informatie over het gebruik van
Verschillen tussen PowerShell v4 en v5
Er zijn verschillen in waar DSC-resources moeten worden opgeslagen in PowerShell 4.0. Zie Resourcelocatie voor meer informatie.