Met behulp van de configuratiegegevens in DSCUsing configuration data in DSC

Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

Met behulp van de ingebouwde DSC ConfigurationData parameter, kunt u gegevens die kunnen worden gebruikt in een configuratie definiëren.By using the built-in DSC ConfigurationData parameter, you can define data that can be used within a configuration. Hiermee kunt u voor het maken van een configuratie voor één die kan worden gebruikt voor meerdere knooppunten of voor verschillende omgevingen.This allows you to create a single configuration that can be used for multiple nodes or for different environments. Bijvoorbeeld, als u een toepassing ontwikkelt, kunt u één configuratie gebruiken voor ontwikkel- en productie-omgevingen en configuratiegegevens gebruiken om op te geven gegevens voor elke omgeving.For example, if you are developing an application, you can use one configuration for both development and production environments, and use configuration data to specify data for each environment.

Dit onderwerp beschrijft de structuur van de ConfigurationData hash-tabel.This topic describes the structure of the ConfigurationData hashtable. Zie voor voorbeelden van het gebruik van configuratiegegevens scheiden van gegevens en de omgeving.For examples of how to use configuration data, see Separating configuration and environment data.

De algemene parameter ConfigurationDataThe ConfigurationData common parameter

Een DSC-configuratie heeft een algemene parameter ConfigurationData, dat u opgeeft wanneer u de configuratie compileren.A DSC configuration takes a common parameter, ConfigurationData, that you specify when you compile the configuration. Zie voor meer informatie over het compileren van configuraties DSC-configuraties.For information about compiling configurations, see DSC configurations.

De ConfigurationData -parameter is een hashtabel die ten minste één sleutel met de naam moet hebben AllNodes.The ConfigurationData parameter is a hashtable that must have at least one key named AllNodes. Het kan ook een of meer sleutels hebben.It can also have one or more other keys.

Notitie

De voorbeelden in dit onderwerp gebruiken één extra sleutel (anders dan de benoemde AllNodes key) met de naam NonNodeData, maar u kunt een willekeurig aantal aanvullende sleutels bevatten en naam elke gewenste.The examples in this topic use a single additional key (other than the named AllNodes key) named NonNodeData, but you can include any number of additional keys, and name them whatever you want.

$MyData =
@{
    AllNodes = @()
    NonNodeData = ""
}

De waarde van de AllNodes sleutel is een matrix.The value of the AllNodes key is an array. Elk element van deze matrix is ook een hashtabel die ten minste één sleutel met de naam moet hebben NodeName:Each element of this array is also a hash table that must have at least one key named NodeName:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
        },


        @{
            NodeName = "VM-2"
        },


        @{
            NodeName = "VM-3"
        }
    );

    NonNodeData = ""
}

U kunt andere sleutels toevoegen aan elk hash-tabel:You can add other keys to each hash table as well:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
            Role     = "WebServer"
        },


        @{
            NodeName = "VM-2"
            Role     = "SQLServer"
        },


        @{
            NodeName = "VM-3"
            Role     = "WebServer"
        }
    );

    NonNodeData = ""
}

Als u wilt een eigenschap van toepassing op alle knooppunten, kunt u een lid van de AllNodes matrix heeft een NodeName van *.To apply a property to all nodes, you can create a member of the AllNodes array that has a NodeName of *. Bijvoorbeeld, voor elk knooppunt een LogPath eigenschap, u kunt dit doen:For example, to give every node a LogPath property, you could do this:

$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 de naam LogPath met een waarde van "C:\Logs" aan elk van de andere blokken (VM-1, VM-2, en VM-3).This is the equivalent of adding a property with a name of LogPath with a value of "C:\Logs" to each of the other blocks (VM-1, VM-2, and VM-3).

De hashtabel ConfigurationData definiërenDefining the ConfigurationData hashtable

U kunt definiëren ConfigurationData als een variabele binnen hetzelfde scriptbestand als een configuratie (zoals in het vorige voorbeeld) of in een afzonderlijke .psd1 bestand.You can define ConfigurationData either as a variable within the same script file as a configuration (as in our previous examples) or in a separate .psd1 file. Voor het definiëren van ConfigurationData in een .psd1 bestand, maakt u een bestand met alleen de hash-tabel die de configuratiegegevens vertegenwoordigt.To define ConfigurationData in a .psd1 file, create a file that contains only the hashtable that represents the configuration data.

U kunt bijvoorbeeld een bestand met de naam maken MyData.psd1 met de volgende inhoud:For example, you could create a file named MyData.psd1 with the following contents:

@{
    AllNodes =
    @(
        @{
            NodeName    = 'VM-1'
            FeatureName = 'Web-Server'
        },

        @{
            NodeName    = 'VM-2'
            FeatureName = 'Hyper-V'
        }
    )
}

Een configuratie met configuratiegegevens compilerenCompiling a configuration with configuration data

Samengesteld op basis van een configuratie waarvoor u configuratiegegevens hebt gedefinieerd, geeft u de configuratiegegevens als de waarde van de ConfigurationData parameter.To compile a configuration for which you have defined configuration data, you pass the configuration data as the value of the ConfigurationData parameter.

Hiermee maakt u een MOF-bestand voor elk item in de AllNodes matrix.This will create a MOF file for each entry in the AllNodes array. Elke MOF-bestand worden benoemd met de NodeName eigenschap van de bijbehorende matrixvermelding.Each MOF file will be named with the NodeName property of the corresponding array entry.

Bijvoorbeeld, als het definiëren van configuratiegegevens, zoals in de MyData.psd1 bestand hierboven, een configuratie compileren maakt zowel VM-1.mof en VM-2.mof bestanden.For example, if you define configuration data as in the MyData.psd1 file above, compiling a configuration would create both VM-1.mof and VM-2.mof files.

Compileren van een configuratie met configuratiegegevens met behulp van een variabeleCompiling a configuration with configuration data using a variable

Gebruik van de configuratiegegevens die is gedefinieerd als een variabele in dezelfde .ps1 bestand als de configuratie, geeft u de variabele naam als de waarde van de ConfigurationData parameter bij het compileren van de configuratie:To use configuration data that is defined as a variable in the same .ps1 file as the configuration, you pass the variable name as the value of the ConfigurationData parameter when compiling the configuration:

MyDscConfiguration -ConfigurationData $MyData

Compileren van een configuratie met configuratiegegevens met een gegevensbestandCompiling a configuration with configuration data using a data file

Voor het gebruik van de configuratiegegevens die is gedefinieerd in een bestand .psd1 u geeft het pad en bestandsnaam van het bestand als de waarde van de ConfigurationData parameter bij het compileren van de configuratie:To use configuration data that is defined in a .psd1 file, you pass the path and name of that file as the value of the ConfigurationData parameter when compiling the configuration:

MyDscConfiguration -ConfigurationData .\MyData.psd1

ConfigurationData variabelen gebruiken in een configuratieUsing ConfigurationData variables in a configuration

DSC biedt drie speciale variabelen die kunnen worden gebruikt in een configuratiescript: $AllNodes, $Node, en $ConfigurationData.DSC provides three special variables that can be used in a configuration script: $AllNodes, $Node, and $ConfigurationData.

  • $AllNodes verwijst naar de volledige verzameling van knooppunten die zijn gedefinieerd in ConfigurationData.$AllNodes refers to the entire collection of nodes defined in ConfigurationData. U kunt filteren de AllNodes verzameling met behulp van . WHERE() en . ForEach().You can filter the AllNodes collection by using .Where() and .ForEach().
  • Knooppunt verwijst naar een bepaald item in de AllNodes verzameling nadat deze is gefilterd met behulp van . WHERE() of . ForEach().Node refers to a particular entry in the AllNodes collection after it is filtered by using .Where() or .ForEach().
  • ConfigurationData verwijst naar de volledige hash-tabel die is doorgegeven als parameter bij het compileren van een configuratie.ConfigurationData refers to the entire hash table that is passed as the parameter when compiling a configuration.

Met behulp van de gegevens niet-knooppuntUsing non-node data

Als er in de eerdere voorbeelden hebt gezien de ConfigurationData hashtabel kan een of meer sleutels naast de vereiste hebben AllNodes sleutel.As we've seen in previous examples, the ConfigurationData hashtable can have one or more keys in addition to the required AllNodes key. In de voorbeelden in dit onderwerp, hebben we slechts één extra knooppunt gebruikt en met de naam NonNodeData.In the examples in this topic, we have used only a single additional node, and named it NonNodeData. U kunt echter een aantal aanvullende sleutels opgeven en elke gewenste naam.However, you can define any number of additional keys, and name them anything you want.

Zie voor een voorbeeld van het gebruik van niet-knooppuntgegevens scheiden van gegevens en de omgeving.For an example of using non-node data, see Separating configuration and environment data.

Zie ookSee Also