Uso de datos de configuración en DSCUsing configuration data in DSC

Se aplica a: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

Puede definir los datos que se pueden usar dentro de una configuración al usar el parámetro DSC integrado ConfigurationData .By using the built-in DSC ConfigurationData parameter, you can define data that can be used within a configuration. Esto le permite crear una única configuración que puede usarse para varios nodos o para entornos diferentes.This allows you to create a single configuration that can be used for multiple nodes or for different environments. Por ejemplo, si está desarrollando una aplicación, puede usar una configuración para los entornos de producción y desarrollo, y usar datos de configuración para especificar datos para cada entorno.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.

En este tema se describe la estructura de la tabla hash ConfigurationData .This topic describes the structure of the ConfigurationData hashtable. Para ejemplos sobre cómo usar datos de configuración, consulte Separación de los datos de entorno y configuración.For examples of how to use configuration data, see Separating configuration and environment data.

El parámetro común ConfigurationDataThe ConfigurationData common parameter

Una configuración DSC toma un parámetro común ConfigurationData , que se especifica cuando se compila la configuración.A DSC configuration takes a common parameter, ConfigurationData , that you specify when you compile the configuration. Para más información sobre la compilación de configuraciones, consulte Configuraciones DSC.For information about compiling configurations, see DSC configurations.

El parámetro ConfigurationData es una tabla hash que debe tener al menos una clave denominada AllNodes .The ConfigurationData parameter is a hashtable that must have at least one key named AllNodes . También puede tener una u otras claves más.It can also have one or more other keys.

Nota

Los ejemplos de este tema usan una clave adicional única (distinta de la clave denominada AllNodes ) llamada NonNodeData, pero puede incluir cualquier número de claves adicionales y asignarles los nombres de su preferencia.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 = ""
}

El valor de la clave AllNodes es una matriz.The value of the AllNodes key is an array. Cada elemento de esta matriz también es una tabla hash que debe tener al menos una clave denominada 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 = ""
}

También puede agregar otras claves a cada tabla hash: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 = ""
}

Para aplicar una propiedad a todos los nodos, puede crear un miembro de la matriz AllNodes que tenga un NodeName de *.To apply a property to all nodes, you can create a member of the AllNodes array that has a NodeName of *. Por ejemplo, para aplicar a todos los nodos una propiedad LogPath, se podría hacer lo siguiente: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"
        }
    );
}

Esto equivale a agregar una propiedad con un nombre de LogPath con un valor de "C:\Logs" a cada uno de los otros bloques (VM-1, VM-2 y 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).

Definición de la tabla hash ConfigurationDataDefining the ConfigurationData hashtable

Puede definir ConfigurationData como una variable en el mismo archivo de script que una configuración (como en los ejemplos anteriores) o en un archivo .psd1 independiente.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. Para definir ConfigurationData en un archivo .psd1, cree un archivo que contenga solo la tabla hash que representa los datos de configuración.To define ConfigurationData in a .psd1 file, create a file that contains only the hashtable that represents the configuration data.

Por ejemplo, podría crear un archivo denominado MyData.psd1 con el siguiente contenido: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'
        }
    )
}

Compilación de una configuración con datos de configuraciónCompiling a configuration with configuration data

Para compilar una configuración para la que definió datos de configuración, pase los datos de configuración como el valor del parámetro ConfigurationData .To compile a configuration for which you have defined configuration data, you pass the configuration data as the value of the ConfigurationData parameter.

Con esto se creará un archivo MOF para cada entrada de la matriz AllNodes .This will create a MOF file for each entry in the AllNodes array. Cada archivo MOF se denominará con la propiedad NodeName de la entrada de matriz correspondiente.Each MOF file will be named with the NodeName property of the corresponding array entry.

Por ejemplo, si define los datos de configuración como en el archivo MyData.psd1 anterior, compilar una configuración creará los archivos VM-1.mof y VM-2.mof.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.

Compilación de una configuración con datos de configuración mediante una variableCompiling a configuration with configuration data using a variable

Para usar datos de configuración que se definen como variable en el mismo archivo .ps1 que la configuración, pase el nombre de la variable como el valor del parámetro ConfigurationData cuando compile la configuración: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

Compilación de una configuración con datos de configuración mediante un archivo de datosCompiling a configuration with configuration data using a data file

Para usar datos de configuración que se definen en un archivo. psd1, pase la ruta de acceso y el nombre de ese archivo como el valor del parámetro ConfigurationData al compilar la configuración: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

Uso de variables ConfigurationData en una configuraciónUsing ConfigurationData variables in a configuration

DSC proporciona las siguientes variables especiales que se pueden usar en un script de configuración:DSC provides the following special variables that can be used in a configuration script:

  • $AllNodes hace referencia a toda la colección de nodos que se define en ConfigurationData .$AllNodes refers to the entire collection of nodes defined in ConfigurationData . Puede filtrar la colección AllNodes mediante .Where() y .ForEach() .You can filter the AllNodes collection by using .Where() and .ForEach() .
  • ConfigurationData hace referencia a toda la tabla hash que se pasa como parámetro al compilar una configuración.ConfigurationData refers to the entire hash table that is passed as the parameter when compiling a configuration.
  • MyTypeName contiene el nombre de configuración en que se usa la variable.MyTypeName contains the configuration name the variable is used in. Por ejemplo, en la configuración MyDscConfiguration, $MyTypeName tendrá un valor de MyDscConfiguration.For example, in the configuration MyDscConfiguration, the $MyTypeName will have a value of MyDscConfiguration.
  • Node hace referencia a un valor determinado en la colección AllNodes después de que se filtre mediante .Where() o .ForEach() .Node refers to a particular entry in the AllNodes collection after it is filtered by using .Where() or .ForEach() .
    • Puede obtener más información sobre estos métodos en about_arrays.You can read more about these methods in about_arrays

Uso de datos que no son de nodoUsing non-node data

Tal como vimos en ejemplos anteriores, la tabla hash ConfigurationData puede tener una o más claves además de la clave AllNodes requerida.As we've seen in previous examples, the ConfigurationData hashtable can have one or more keys in addition to the required AllNodes key. En los ejemplos de este tema, usamos solo un nodo adicional y lo denominamos NonNodeData.In the examples in this topic, we have used only a single additional node, and named it NonNodeData. Sin embargo, puede definir cualquier número de claves adicionales y asignarles el nombre que desee.However, you can define any number of additional keys, and name them anything you want.

Para un ejemplo de cómo usar datos no de nodos, consulte Separación de los datos de entorno y configuración.For an example of using non-node data, see Separating configuration and environment data.

Consulte tambiénSee Also