Recursos de DSC

Aplica-se ao Windows PowerShell 4.0 e posterior.

Visão geral

Os Recursos de Configuração de Estado Desejado (DSC) fornecem os blocos de construção para uma configuração DSC. Um recurso expõe propriedades que podem ser configuradas (esquema) e contém as funções de script do PowerShell que o Gerenciador de Configurações Local (LCM) chama de "realizar".

Um recurso pode modelar algo tão genérico quanto um arquivo ou tão específico quanto uma configuração de servidor do IIS. Grupos de recursos semelhantes são combinados em um Módulo de DSC, que organiza todos os arquivos necessários em uma estrutura que é portátil e inclui metadados para identificar como os recursos devem ser usados.

Cada recurso tem um *esquema que determina a sintaxe necessária para usar o recurso em uma Configuração. Um esquema de recurso pode ser definido das seguintes maneiras:

  • Arquivo Schema.Mof: A maioria dos recursos define seus esquemas em um arquivo schema.mof usando um Managed Object Format.
  • Arquivo <Resource Name>.schema.psm1: Recursos de composição definem o esquema em um arquivo <ResourceName>.schema.psm1 usando um bloco de parâmetro.
  • Arquivo <Resource Name>.psm1: Recursos DSC baseado em classe definem seus esquemas na definição da classe. Os itens de sintaxe são indicados como propriedades de Classe. Para saber mais, confira about_Classes.

Para recuperar a sintaxe para um recurso DSC, use o cmdlet Get-DSCResource com o parâmetro Syntax. Esse uso é semelhante ao uso de Get-Command com o parâmetro Syntax para obter a sintaxe do cmdlet. A saída que você vê mostrará o modelo usado para um bloco de recursos do recurso que você especificar.

Get-DscResource -Syntax Service

A saída que você vê deve ser semelhante à saída abaixo, embora a sintaxe deste recurso possa ser alterada no futuro. Como a sintaxe do cmdlet, as chaves vistas entre colchetes são opcionais. Os tipos especificam o tipo de dados esperado de cada chave.

Observação

A chave Garantir é opcional porque o padrão é "Presente".

Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Running | Stopped }]
}

Observação

Nas versões do PowerShell antes de 7.0, Get-DscResource não encontra recursos de DSC baseados em classe.

Dentro de uma Configuração, um bloco de recursos de Serviço poderia se parecer com isso para Garantir que o serviço de Spooler está em execução.

Observação

Antes de usar um recurso em uma configuração, você deve importá-lo usando Import-DSCResource.

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as l
        # ong as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }
    }
}

Configurações podem conter várias instâncias do mesmo tipo de recurso. Cada instância deve ter um nome exclusivo. No exemplo a seguir, um segundo bloco de recurso de Serviço é adicionado ao configurar o serviço "DHCP".

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as
        # long as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }

        # To configure a second service resource block, add another Service
        # resource block and use a unique name.
        Service "DHCP - Running"
        {
            Name = "DHCP"
            State = "Running"
        }
    }
}

Observação

A partir do PowerShell 5.0, o IntelliSense foi adicionado para DSC. Esse novo recurso permite que você use TAB e Ctrl+Espaço para preenchimento automático de nomes de chaves.

Recurso IntelliSense usando o preenchimento com Tab

Tipos de recursos

O Windows vem com recursos internos, e o Linux tem recursos específicos do sistema operacional. Existem recursos de dependências entre nós, recursos de gerenciamento de pacotes e recursos de propriedade e manutenção da comunidade. Você pode usar as etapas acima para determinar as sintaxes desses recursos e como usá-las. As páginas que atendem a esses recursos foram arquivadas em Referência.

Windows built-in resources (Recursos internos do Windows)

Recursos de dependência entre nós

Recursos de Gerenciamento de Pacotes

Recursos Linux