Compartilhar via


Configurações de DSC

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

As configurações de DSC são scripts do PowerShell que definem um tipo especial de função. Para definir uma configuração, use a palavra-chave do PowerShell Configuration.

Configuration MyDscConfiguration {
    Node "TEST-PC1" {
        WindowsFeature MyFeatureInstance {
            Ensure = 'Present'
            Name = 'RSAT'
        }
        WindowsFeature My2ndFeatureInstance {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}
MyDscConfiguration

Salve o script como um arquivo .ps1.

Sintaxe de configuração

Um script de configuração consiste nas seguintes partes:

  • O bloco Configuração . Esse é o bloco de script mais externo. Você o define usando a palavra-chave Configuration e fornecendo um nome. Nesse caso, o nome da configuração é MyDscConfiguration.
  • Um ou mais blocos de nó . Eles definem os nós (computadores ou VMs) que você está configurando. Na configuração acima, há um bloco de nó que tem como alvo um computador chamado TEST-PC1. O bloco de nó pode aceitar vários nomes de computador.
  • Um ou mais blocos de recursos. É aqui que a configuração define as propriedades dos recursos que está configurando. Nesse caso, há dois blocos de recursos, cada um dos quais chama o recurso WindowsFeature .

Observação

O recurso DSC WindowsFeature só está disponível em computadores Windows Server. Para computadores com um sistema operacional cliente, como Windows 11, você precisa usar WindowsOptionalFeature . Para obter mais informações, consulte a seção "WindowsOptionalFeature" da documentação PSDscResources.

Em um bloco de configuração , você pode fazer qualquer coisa que normalmente faria em uma função do PowerShell. No exemplo anterior, se você não quisesse codificar o nome do computador de destino na configuração, poderia adicionar um parâmetro para o nome do nó.

Neste exemplo, você especifica o nome do nó passando-o como o parâmetro ComputerName ao compilar a configuração. O nome padrão é localhost.

Configuration MyDscConfiguration
{
    param
    (
        [string[]]$ComputerName='localhost'
    )

    Node $ComputerName
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

O bloco Node também pode aceitar vários nomes de computador. No exemplo acima, você pode usar o parâmetro ou passar uma lista separada por vírgulas -ComputerName de computadores diretamente para o bloco Node .

MyDscConfiguration -ComputerName "localhost", "Server01"

Ao especificar uma lista de computadores para o bloco de Nó , de dentro de uma Configuração, você precisa usar a notação de matriz.

Configuration MyDscConfiguration
{
    Node @('localhost', 'Server01')
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

Compilando a configuração

Antes de executar uma configuração, você precisa compilá-la em um documento MOF. Você faz isso chamando a configuração como chamaria uma função do PowerShell. A última linha do exemplo, contendo apenas o nome da configuração, chama a configuração.

Observação

Para chamar uma configuração, a função deve estar no escopo global (como acontece com qualquer outra função do PowerShell). Você pode fazer isso acontecer "dot-sourcing" do script ou executando o script de configuração usando F5 ou clicando no botão Executar script no ISE. Para dot-source do script, execute o comando . .\myConfig.ps1 onde myConfig.ps1 é o nome do arquivo de script que contém sua configuração.

Quando você chama a configuração, ela:

  • Resolve todas as variáveis
  • Cria uma pasta no diretório atual com o mesmo nome da configuração.
  • Cria um arquivo chamado NodeName.mof no novo diretório, em que NodeName é o nome do nó de destino da configuração. Se houver mais de um nó, um arquivo MOF será criado para cada nó.

Observação

O arquivo MOF contém todas as informações de configuração para o nó de destino. Por causa disso, é importante mantê-lo seguro. Para obter mais informações, consulte Protegendo o arquivo MOF.

A compilação da primeira configuração acima resulta na seguinte estrutura de pastas:

. .\MyDscConfiguration.ps1
MyDscConfiguration
    Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10/23/2015   4:32 PM           2842 localhost.mof

Se a configuração usar um parâmetro, como no segundo exemplo, ele deverá ser fornecido em tempo de compilação. Veja como isso ficaria:

. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
    Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10/23/2015   4:32 PM           2842 MyTestNode.mof

Usando novos recursos em sua configuração

Se você executou os exemplos anteriores, talvez tenha notado que foi avisado de que estava usando um recurso sem importá-lo explicitamente. Hoje, o DSC é fornecido com 12 recursos como parte do módulo PSDesiredStateConfiguration.

O cmdlet, Get-DscResource, pode ser usado para determinar quais recursos estão instalados no sistema e disponíveis para uso pelo LCM. Depois que esses módulos forem colocados $env:PSModulePath e reconhecidos corretamente por Get-DscResource, eles ainda precisarão ser carregados em sua configuração.

Import-DscResource é uma palavra-chave dinâmica que só pode ser reconhecida dentro de um bloco de configuração , não é um cmdlet. Import-DscResource dá suporte a dois parâmetros:

  • ModuleName é a maneira recomendada de usar Import-DscResource. Ele aceita o nome do módulo que contém os recursos a serem importados (bem como uma matriz de cadeia de caracteres de nomes de módulo).
  • Name é o nome do recurso a ser importado. Esse não é o nome amigável retornado como "Name" por Get-DscResource, mas o nome da classe usado ao definir o esquema de recurso (retornado como ResourceType por Get-DscResource).

Para obter mais informações sobre como usar Import-DSCResource, consulte Usando Import-DSCResource

Diferenças do PowerShell v4 e v5

Há diferenças em onde os recursos de DSC precisam ser armazenados no PowerShell 4.0. Para obter mais informações, consulte Local do recurso.

Consulte Também