O que é PowerShell DSC (Desired State Configuration): guia completo e diferenças com DSC multiplataforma

Última atualização: 16/10/2025
autor: Isaac
  • DSC é um modelo declarativo e idempotente: ele descreve o estado e o mecanismo converge para ele.
  • O PSDSC utiliza MOF e LCM em Windows; O DSC atual é multiplataforma e usa JSON/YAML.
  • Integra-se com o Azure Automation, WinGet e outras ferramentas para orquestração em escala.
  • Melhores práticas: modularização, controle de versão, testes e alinhamento com NIST/FISMA.

Configuração de estado desejado do PowerShell DSC

Se você administra sistemas Windows, Linux ou macOS, mais cedo ou mais tarde você se deparará com o conceito de um estado desejado. PowerShell A Configuração do Estado Desejado (DSC) é a maneira mais direta de expressar esse estado e mantê-lo o tempo, evitando sustos, corrigindo desvios e agilizando implantações. Aqui você encontrará uma guia completo, com exemplos práticos e as diferenças entre o DSC clássico do PowerShell e o mais novo DSC multiplataforma.

Além das definições formais, pense no DSC como uma promessa que você faz aos seus servidores: "Quero que você fique assim, e se você mudar, eu o colocarei de volta onde você pertence."A melhor parte é que essa promessa é declarativa e idempotente: você descreve o resultado, e o mecanismo se encarrega de chegar lá e permanecer lá, não importa quantas vezes você execute a mesma configuração.

O que é DSC e por que você pode se interessar

DSC é uma plataforma de configuração declarativa. Declarativo porque você descreve o estado que deseja (serviços, funções e recursos ativos, pacotes, arquivos, chaves de registro, etc.), não a sequência de etapas meticulosas para alcançá-lo. O mecanismo compara o estado atual com o estado desejado e faz alterações mínimas para convergir.

Sua unidade básica são os recursos. Um recurso DSC encapsula como 'Obter', 'Testar' e 'Definir' o estado de algo: um serviço, um arquivo, Active Directory, SQL Server, etc. Esta interface Obter/Testar/Definir permite que você verifique se um nó já está como deveria estar e, caso contrário, aplique a alteração.

No PowerShell DSC clássico (PSDSC), o componente de ligação é o Gerenciador de Configuração Local (LCM). O LCM é o mecanismo que aplica configurações, monitora-as e pode reforçá-las periodicamente.. Ele funciona no modo push (você envia a configuração) ou no modo pull (o nó a baixa de um servidor Pull).

O DSC é suportado por padrões de gerenciamento como CIM e IMO. Essa base aberta facilita a interoperabilidade e permite que ferramentas de terceiros coexistam sem atrito., algo crucial se sua infraestrutura mistura diferentes fabricantes e plataformas.

Diferenças entre o PowerShell DSC (PSDSC) e o atual DSC multiplataforma

Diferenças entre PSDSC e DSC multiplataforma

Nos últimos anos, a Microsoft lançou um DSC que vai além do PowerShell e do Windows. Este 'novo' DSC roda em Windows, Linux e macOS e é invocado com a ferramenta de linha de comando comandos Dsc, sem depender do PowerShell ou de seu módulo PSDesiredStateConfiguration.

  • Independência do PowerShellO DSC atual não requer PowerShell. No entanto, você pode usar recursos do PSDSC usando adaptadores: Microsoft.DSC/PowerShell para recursos em classes do PowerShell e Microsoft.Windows/WindowsPowerShell para aqueles que dependem do Windows PowerShell.
  • Formato do documentoNo PSDSC, as configurações são compiladas em MOF. No DSC atual, os documentos de configuração e os esquemas de recursos são definidos em JSON ou YAML.
  • Modelo de execução: O PSDSC apresenta o LCM, que pode ser executado como um serviço e manter o estado. O DSC moderno é invocado como um comando; não inclui LCM ou serviço residente.
  • Multilíngue: você pode escrever recursos em bash, Python, C#, Rust ou o que você preferir. O foco está na plataforma, não no shell.
  • Integração: O DSC multiplataforma expõe esquemas JSON para integração com WinGet, Microsoft Dev Box e Azure Machine Configuration, entre outras ferramentas.
  Como usar o Windows Ink com tablets gráficos: recursos, configurações e soluções

Em resumo, o PSDSC continua sendo essencial no Windows e muito maduro para administração de funções e sistemas operacionais. O DSC multiplataforma oferece um caminho mais amplo, mais portátil e sem restrições de linguagem, ideal para organizações híbridas..

Sistemas suportados e requisitos no Windows

A implementação clássica do DSC no Windows está disponível nativamente ou por meio do Windows Management Framework. O Windows Server 2016, 2019 e 2022 são suportados, além do Windows 10 e Windows 11. O pacote recomendado em ambientes que não possuem a versão mais recente é WMF 5.1.

Há uma exceção importante: O Microsoft Hyper-V Server (produto autônomo) não inclui DSC, então você não poderá gerenciá-lo com o PSDSC ou o Azure Automation State Configuration.

Para operar remotamente, o Windows precisa ter o WinRM configurado corretamente. Você pode habilitá-lo com privilégios de administrador executando Set-WsManQuickConfig -ForceIsso prepara o computador para receber comandos remotos do PowerShell, mesmo se você aplicar configurações no host local.

Se você precisar diagnosticar, os eventos DSC no Windows serão registrados Microsoft-Windows-Dsc/Operational. Eles podem ser ativados toras adicional para depuração avançada quando você precisa ir mais fundo.

Introdução ao PowerShell DSC no Windows

É comum começar com os recursos integrados e adicionar módulos da Galeria do PowerShell. O módulo 'PSDscResources' oferece recursos atualizados para cobrir cenários comuns.:

# Instalar recursos DSC desde PowerShell Gallery
Install-Module 'PSDscResources' -Verbose

Uma configuração PSDSC é definida com a palavra-chave Configuration e compila para MOF. Abaixo está um exemplo que cria uma variável de ambiente e garante que ela esteja presente.:

Configuration CrearVariableEntorno {
  param ()
  Import-DscResource -ModuleName 'PSDscResources'
  Node localhost {
    Environment CrearRutaVariableEntorno {
      Name   = 'CrearVariableEntorno'
      Value  = 'Hola mundo'
      Ensure = 'Present'
      Path   = $true
      Target = @('Process','Machine')
    }
  }
}

# Compilar el MOF en una carpeta de salida
CrearVariableEntorno -OutputPath './CrearVariableEntorno'

Com os MOFs gerados, é hora de aplicá-los. O cmdlet Start-DscConfiguration invoca o LCM para processar a configuração e pode ser executado no modo interativo para acompanhar os detalhes:

Start-DscConfiguration -Path 'C:\CrearVariableEntorno' -Wait -Verbose

Para inspecionar a aparência do nó, você pode verificar o estado atual que o DSC vê. Get-DscConfiguration retorna os valores reais aplicados y Get-DscLocalConfigurationManager mostra a metaconfiguração atual:

# Estado efectivo del nodo
Get-DscConfiguration

# Metaconfiguración (LCM)
Get-DscLocalConfigurationManager

Se você precisar "desafixar" uma configuração, também há uma saída. Remove-DscConfigurationDocument -Stage Current -Verbose exclui o documento aplicado e deixa o nó pronto para receber outro MOF.

Em cenários gerenciados, às vezes você pode querer aplicar uma metaconfiguração LCM (por exemplo, para alterar o modo de atualização ou direcionar um Pull Server). Isso é feito gerando um MOF de metaconfiguração e aplicando-o com Set-DscLocalConfigurationManager -Path 'c:\metaconfig\localhost.meta.mof' -Verbose.

Gerenciador de configuração local: modos, frequência e configurações parciais

O LCM define como e quando as configurações são aplicadas. Parâmetros como ConfigurationMode (ApplyOnly, ApplyAndMonitor ou ApplyAndAutoCorrect) e as frequências RefreshFrequencyMins y ConfigurationModeFrequencyMins Eles controlam se o nó se aplica apenas uma vez, monitora ou monitora e corrige automaticamente.

  Como corrigir o erro 0x80049dd3 no Outlook: guia definitivo

Além disso, você pode trabalhar empurrando ou puxando. No pull, os nós consultam um servidor de configuração (Pull Server) para baixar MOFs e módulos com base em seu identificador. Essa abordagem é muito útil em escala, pois centraliza versões e conformidade.

Desde o Windows Server 2016 (DSC v2), o LCM oferece suporte a configurações parciais. Consiste em quebrar a configuração em fragmentos independentes. que o LCM combina: por exemplo, uma equipe de segurança define sua parte e outra equipe define a parte de aplicativos, sem interferir uma na outra.

Cenários de uso da vida real

O DSC é ideal para "padrões operacionais" repetíveis e auditáveis. Algumas aplicações típicas incluem configurar funções e recursos, proteger serviços, preparar o IIS, instalar pacotes, tocar no Registro ou definir variáveis ​​de ambiente.Você pode encontrar guias práticos sobre como manipular o registro com o PowerShell para integrá-lo às suas configurações.

Para aplicativos, você pode automatizar a instalação, a configuração de dependências, a publicação do site e o ajuste fino. O melhor é que a exibição resultante é consistente. em todos os nós, seja um laboratório ou um ambiente de produção.

Para segurança e conformidade, o DSC é uma ótima opção. Políticas de proteção, configurações de firewall, contas locais ou políticas de auditoria Eles se tornam uma configuração versionada e auditável, não um "livro de receitas" manual.

Gerenciamento de rede (adaptadores, IPs, regras, serviços) também entram na lista. Se algo for alterado, o motor detecta e, dependendo do modo, impõe novamente o estado, o que reduz derivativos inesperados e horas de suporte.

Como uma ideia simples, imagine que você quer que um serviço crítico esteja sempre em execução. Com um recurso Service e modo ApplyAndAutoCorrect, se alguém o interrompe, o LCM o retomaVocê pode até contar com tarefas agendadas para reforçar a verificação.

Integração com Azure e orquestração

O DSC brilha quando faz parte de uma cadeia de automação. O Azure Automation pode orquestrar o provisionamento (runbooks, fluxos de trabalho) e delegar a configuração da VM ao DSC., tanto no Azure quanto no local.

Um padrão comum é publicar sua configuração em um armazenamento e associá-lo a VMs com a extensão DSC. Comandos como Publish-AzureVMDscConfiguration faça as malas escrita em um .zip com os módulos necessáriose Set-AzureVMDSCExtension aplica-o na criação.

# Publicar la configuración (convierte el .ps1 y módulos en .zip)
Publish-AzureVMDscConfiguration -ConfigurationPath './MiConfig.ps1' -Force

# Asignar la configuración a una VM al desplegarla
Set-AzureVMDSCExtension -VM $vm -ConfigurationArchive 'MiConfig.zip' -ConfigurationName 'NombreDeConfig'

Em implantações de IaaS, a ideia é simples: A orquestração cria e conecta recursos de nuvem (rede, armazenamento, VMs) e o DSC configura o sistema operacional e os aplicativos em cada VMSe você também versionar e testar suas configurações, terá ambientes reproduzíveis.

Instalando e usando o DSC multiplataforma

O DSC moderno é distribuído como binários portáteis. Você pode baixar a edição mais recente do repositório PowerShell/DSC GitHub, descompactá-la e adicionar a pasta ao seu PATH.. Sem instalações complicadas ou dependências extras.

  Microsoft Flight Simulator 2024 já está disponível: Descubra todos os detalhes do simulador mais avançado até hoje

No Windows, você também pode instalá-lo pela Microsoft Store via WinGet. Primeiro localize o pacote e depois instale a versão estável ou a versão de visualização:

# Buscar los paquetes publicados
winget search DesiredStateConfiguration --source msstore

# Instalar la versión estable
winget install --id 9NVTPZWRC6KQ --source msstore

# Instalar la versión preliminar
winget install --id 9PCX3HX4HZ0Z --source msstore

Este DSC funciona com documentos de configuração escritos em JSON ou YAML e com esquemas também em JSON. O CLI dsc permite que você invoque recursos individuais, aplique documentos inteiros e escreva recursos em qualquer idioma. Além disso, os adaptadores mencionados acima permitem que você aproveite os recursos PSDSC existentes.

Ao padronizar a estrutura de documentos e saídas usando esquemas JSON, Integração com outras ferramentas de plataforma (WinGet, Dev Box, Azure Machine Configuration) É mais direto, facilitando pipelines e fluxos de trabalho modernos.

Boas práticas e conformidade regulatória

Para evitar o caos, é aconselhável modularizar. Divida suas configurações em componentes reutilizáveis ​​e crie módulos de recursos para peças complexas.. Isso permite que você mantenha e dimensione com menos atrito.

Versão de tudo no controle de origem (Git). Salvar configurações e recursos em repositórios facilita o trabalho em equipe, o histórico e as reversõesSe você também usar branches e pull requests, terá revisões e qualidade.

Teste antes de implantar na produção. Ferramentas como o Pester ajudam a validar recursos e configurações e evitar efeitos colaterais, e um ambiente de pré-produção deve fazer parte do processo.

Muitas organizações seguem estruturas como NIST SP 800-53 (por exemplo, controle CM-2 sobre configurações básicas) ou FISMA. O DSC fornece consistência e capacidade de auditoria para alinhar seus sistemas com políticas e padrões., reduzindo o esforço de conformidade manual.

Registros e diagnósticos

Quando algo não bate, o registro de eventos é seu aliado. No Windows, o canal Microsoft-Windows-Dsc/Operational centraliza o que aconteceu (implementação de recursos, correções, erros, etc.). Se precisar de mais detalhes, habilite logs adicionais orientados à depuração.

No Azure, revise também os logs de extensão do DSC e os diagnósticos da VM. Correlacionar a saída de Start-DscConfiguration -Verbose com o visualizador de eventos você economiza tempo para localizar o recurso exato que falhou.

O DSC, seja o PowerShell clássico ou multiplataforma, oferece uma base sólida para IaC em servidores e estações de trabalho. Defina o estado, compartilhe-o como código, teste-o e deixe o mecanismo fazer o trabalho repetitivo.; para que suas equipes possam se concentrar no valor real, não em apagar incêndios.

Para que serve o DSC (Desired State Configuration)-2?
Artigo relacionado:
Para que é usado o DSC (Configuração de Estado Desejado)? Guia definitivo, usos e exemplos