Usando dados de configuração em DSCUsing configuration data in DSC

Aplica-se a: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

Usando o parâmetro ConfigurationData da DSC interna, você pode definir os dados que podem ser usados dentro de uma configuração.By using the built-in DSC ConfigurationData parameter, you can define data that can be used within a configuration. Isso permite que você crie uma única configuração que pode ser usada para vários nós ou para ambientes diferentes.This allows you to create a single configuration that can be used for multiple nodes or for different environments. Por exemplo, se estiver desenvolvendo um aplicativo, você pode usar uma configuração para os ambientes de desenvolvimento e produção e usar dados de configuração para especificar dados para cada ambiente.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.

Este tópico descreve a estrutura da tabela de hash ConfigurationData.This topic describes the structure of the ConfigurationData hashtable. Para obter exemplos de como usar dados de configuração, consulte Separando Dados de Configuração e de Ambiente.For examples of how to use configuration data, see Separating configuration and environment data.

O parâmetro comum de ConfigurationDataThe ConfigurationData common parameter

Uma configuração DSC usa um parâmetro comum, ConfigurationData, que você especifica ao compilar a configuração.A DSC configuration takes a common parameter, ConfigurationData, that you specify when you compile the configuration. Para obter informações sobre configurações de compilação, consulte configurações DSC.For information about compiling configurations, see DSC configurations.

O parâmetro ConfigurationData é uma tabela de hash que deve ter pelo menos uma chave chamada AllNodes.The ConfigurationData parameter is a hasthtable that must have at least one key named AllNodes. Ele também pode ter uma ou mais chaves.It can also have one or more other keys.

Observação: os exemplos neste tópico usam uma única chave adicional (que não é a chave nomeada AllNodes) denominada NonNodeData, mas você pode incluir qualquer número de chaves adicionais e nomeá-las como desejar.Note: 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 = ""   
}

O valor da chave AllNodes é uma matriz.The value of the AllNodes key is an array. Cada elemento dessa matriz também é uma tabela de hash que deve ter pelo menos uma chave chamada 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 = ""   
}

Você também pode adicionar outras chaves para cada tabela de 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 uma propriedade para todos os nós, você pode criar um membro da matriz AllNodes que possua um NodeName de *.To apply a property to all nodes, you can create a member of the AllNodes array that has a NodeName of *. Por exemplo, para atribuir uma propriedade LogPath a cada nó, você pode fazer o seguinte: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"
        }
    );
}

Isso é o equivalente a adicionar uma propriedade com um nome de LogPath com um valor de "C:\Logs" para cada um dos outros blocos (VM-1, VM-2 e 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).

Definição da tabela de hash de ConfigurationDataDefining the ConfigurationData hashtable

Você pode definir ConfigurationData como uma variável dentro do mesmo arquivo de script que uma configuração (como em nossos exemplos anteriores) ou em um arquivo .psd1 separado.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 em um arquivo .psd1, crie um arquivo que contenha somente a tabela de hash que representa os dados de configuração.To define ConfigurationData in a .psd1 file, create a file that contains only the hashtable that represents the configuration data.

Por exemplo, você poderia criar um arquivo chamado MyData.psd1 com o seguinte conteúdo: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'
        }
    )
}

Compilando uma configuração com os dados de configuraçãoCompiling a configuration with configuration data

Para compilar uma configuração para a qual você definiu os dados de configuração, passe os dados de configuração como o valor do parâmetro ConfigurationData.To compile a configuration for which you have defined configuration data, you pass the cofiguration data as the value of the ConfigurationData parameter.

Isso criará um arquivo MOF para cada entrada na matriz AllNodes.This will create a MOF file for each entry in the AllNodes array. Cada arquivo MOF será nomeado com a propriedade NodeName da entrada de matriz correspondente.Each MOF file will be named with the NodeName property of the corresponding array entry.

Por exemplo, se você definir dados de configuração como o arquivo MyData.psd1 acima, compilar uma configuração criará os arquivos VM-1.mof e 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.

Compilando uma configuração com os dados de configuração usando uma variávelCompiling a configuration with configuration data using a variable

Para usar dados de configuração que são definidos como uma variável no mesmo arquivo .ps1 que a configuração, passe o nome da variável como o valor do parâmetro ConfigurationData ao compilar a configuração: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

Compilando uma configuração com os dados de configuração usando um arquivo de dadosCompiling a configuration with configuration data using a data file

Para usar dados de configuração que são definidos em um arquivo .psd1, você passa o caminho e o nome desse arquivo como o valor do parâmetro ConfigurationData ao compilar a configuração: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

Usando variáveis de ConfigurationData em uma configuraçãoUsing ConfigurationData variables in a configuration

A DSC fornece três variáveis especiais que podem ser usadas em um script de configuração: $AllNodes, $Node e $ConfigurationData.DSC provides three special variables that can be used in a configuration script: $AllNodes, $Node, and $ConfigurationData.

  • A $AllNodes refere-se a toda a coleção de nós definida em ConfigurationData.$AllNodes refers to the entire collection of nodes defined in ConfigurationData. Você pode filtrar a coleção AllNodes usando .Where() e .ForEach().You can filter the AllNodes collection by using .Where() and .ForEach().
  • O refere-se a uma entrada específica na coleção AllNodes depois que ela é filtrada usando .Where() ou .ForEach().Node refers to a particular entry in the AllNodes collection after it is filtered by using .Where() or .ForEach().
  • O ConfigurationData refere-se à tabela de hash inteira que é passada como parâmetro ao compilar uma configuração.ConfigurationData refers to the entire hash table that is passed as the parameter when compiling a configuration.

Usar dados sem nósUsing non-node data

Como vimos nos exemplos anteriores, a tabela de hash ConfigurationData pode ter uma ou mais chaves além da chave AllNodes necessária.As we've seen in previous examples, the ConfigurationData hashtable can have one or more keys in addition to the required AllNodes key. Nos exemplos neste tópico, usamos apenas um único nó adicional e nomeamos como NonNodeData.In the examples in this topic, we have used only a single addiontal node, and named it NonNodeData. No entanto, você pode definir qualquer número de chaves adicionais e nomeá-los como desejar.However, you can define any number of addiontal keys, and name them anything you want.

Para obter um exemplo de como usar dados que não são do nó, consulte Separando Dados de Configuração e de Ambiente.For an example of using non-node data, see Separating configuration and environment data.

Consulte TambémSee Also