Delen via


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-2en 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.mofVM-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 MyDscConfigurationheeft de $MyTypeName bijvoorbeeld de waarde MyDscConfiguration.
  • 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.

Zie ook