Configuratiegegevens gebruiken in DSC
Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0
Met behulp van de ingebouwde DSC ConfigurationData-parameter kunt u gegevens definiëren die binnen een configuratie kunnen worden gebruikt. Hiermee kunt u één configuratie maken die kan worden gebruikt voor meerdere knooppunten of voor verschillende omgevingen. Als u bijvoorbeeld een toepassing ontwikkelt, kunt u één configuratie gebruiken voor zowel ontwikkel- als productieomgevingen en configuratiegegevens gebruiken om gegevens voor elke omgeving op te geven.
In dit onderwerp wordt de structuur van de hashtabel ConfigurationData beschreven. Zie Configuratie- en omgevingsgegevens scheiden voor voorbeelden van het gebruik van configuratiegegevens.
De algemene parameter ConfigurationData
Een DSC-configuratie heeft een algemene parameter, ConfigurationData, die u opgeeft wanneer u de configuratie compileert. Zie DSC-configuraties voor meer informatie over het compileren van configuraties.
De parameter ConfigurationData is een hashtabel die ten minste één sleutel met de naam AllNodes moet hebben. Het kan ook een of meer andere sleutels hebben.
Notitie
In de voorbeelden in dit onderwerp wordt één extra sleutel (anders dan de allNodes-sleutel ) gebruikt met de naam NonNodeData
, maar u kunt een willekeurig aantal extra sleutels opnemen en deze een willekeurige naam toevoegen.
$MyData =
@{
AllNodes = @()
NonNodeData = ""
}
De waarde van de AllNodes-sleutel is een matrix. Elk element van deze matrix is ook een hashtabel die ten minste één sleutel met de naam NodeName moet hebben:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
},
@{
NodeName = "VM-2"
},
@{
NodeName = "VM-3"
}
);
NonNodeData = ""
}
U kunt ook andere sleutels toevoegen aan elke hash-tabel:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
Role = "WebServer"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
}
);
NonNodeData = ""
}
Als u een eigenschap wilt toepassen op alle knooppunten, kunt u een lid van de matrix AllNodes maken met de Knooppuntnaam van *
. Als u bijvoorbeeld elk knooppunt een LogPath
eigenschap wilt geven, kunt u het volgende doen:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "*"
LogPath = "C:\Logs"
},
@{
NodeName = "VM-1"
Role = "WebServer"
SiteContents = "C:\Site1"
SiteName = "Website1"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
SiteContents = "C:\Site2"
SiteName = "Website3"
}
);
}
Dit is het equivalent van het toevoegen van een eigenschap met een naam van LogPath
met een waarde van "C:\Logs"
aan elk van de andere blokken (VM-1
, VM-2
en VM-3
).
De hashtabel ConfigurationData definiëren
U kunt ConfigurationData definiëren als een variabele in hetzelfde scriptbestand als een configuratie (zoals in de vorige voorbeelden) of in een afzonderlijk .psd1
bestand. Als u ConfigurationData in een .psd1
bestand wilt definiëren, maakt u een bestand dat alleen de hashtabel bevat die de configuratiegegevens vertegenwoordigt.
U kunt bijvoorbeeld een bestand met de naam MyData.psd1
maken met de volgende inhoud:
@{
AllNodes =
@(
@{
NodeName = 'VM-1'
FeatureName = 'Web-Server'
},
@{
NodeName = 'VM-2'
FeatureName = 'Hyper-V'
}
)
}
Een configuratie compileren met configuratiegegevens
Als u een configuratie wilt compileren waarvoor u configuratiegegevens hebt gedefinieerd, geeft u de configuratiegegevens door als de waarde van de parameter ConfigurationData .
Hiermee maakt u een MOF-bestand voor elke vermelding in de AllNodes-matrix . Elk MOF-bestand krijgt een naam met de NodeName
eigenschap van de bijbehorende matrixvermelding.
Als u bijvoorbeeld configuratiegegevens definieert zoals in het MyData.psd1
bovenstaande bestand, worden bij het compileren van een configuratie zowel bestanden als VM-1.mof
VM-2.mof
bestanden gemaakt.
Een configuratie compileren met configuratiegegevens met behulp van een variabele
Als u configuratiegegevens wilt gebruiken die zijn gedefinieerd als een variabele in hetzelfde .ps1
bestand als de configuratie, geeft u de naam van de variabele door als de waarde van de parameter ConfigurationData bij het compileren van de configuratie:
MyDscConfiguration -ConfigurationData $MyData
Een configuratie compileren met configuratiegegevens met behulp van een gegevensbestand
Als u configuratiegegevens wilt gebruiken die zijn gedefinieerd in een .psd1-bestand, geeft u het pad en de naam van dat bestand door als de waarde van de parameter ConfigurationData bij het compileren van de configuratie:
MyDscConfiguration -ConfigurationData .\MyData.psd1
ConfigurationData-variabelen gebruiken in een configuratie
DSC biedt de volgende speciale variabelen die kunnen worden gebruikt in een configuratiescript:
- $AllNodes verwijst naar de volledige verzameling knooppunten die zijn gedefinieerd in ConfigurationData. U kunt de AllNodes-verzameling filteren met behulp van . Where() en . ForEach().
- ConfigurationData verwijst naar de volledige hashtabel die wordt doorgegeven als de parameter bij het compileren van een configuratie.
- MyTypeName bevat de configuratienaam waarin de variabele wordt gebruikt. In de configuratie
MyDscConfiguration
heeft de$MyTypeName
bijvoorbeeld de waardeMyDscConfiguration
. - Knooppunt verwijst naar een bepaalde vermelding in de Verzameling AllNodes nadat deze is gefilterd met behulp van . Where() of . ForEach().
- Meer informatie over deze methoden vindt u in about_arrays
Niet-knooppuntgegevens gebruiken
Zoals we in eerdere voorbeelden hebben gezien, kan de hashtabel ConfigurationData naast de vereiste AllNodes-sleutel een of meer sleutels hebben. In de voorbeelden in dit onderwerp hebben we slechts één extra knooppunt gebruikt en dit de naam NonNodeData
. U kunt echter een willekeurig aantal extra sleutels definiëren en deze elke gewenste naam geven.
Zie Configuratie- en omgevingsgegevens scheiden voor een voorbeeld van het gebruik van niet-knooppuntgegevens.