Recursos de DSC

Visão geral

Os recursos de DSC fornecem uma interface padronizada para gerenciar as configurações de um sistema. Um recurso DSC define as propriedades que você pode gerenciar e contém o código do PowerShell que Invoke-DscResource chama para "fazê-lo".

Um recurso DSC pode modelar algo tão genérico quanto um arquivo ou tão específico quanto uma configuração de servidor IIS. Grupos de recursos de DSC relacionados são combinados em módulos do PowerShell. Os módulos fornecem um pacote portátil com controle de versão para recursos de DSC e incluem metadados e documentação sobre eles.

Cada recurso de DSC tem um esquema que determina a sintaxe necessária para usar o recurso DSC com Invoke-DscResource ou em uma configuração. O esquema de um recurso de DSC é definido das seguintes maneiras:

  • <Resource Name>.psm1 file: recursos DSC baseados em classe definem seu esquema na definição de classe. Os itens de sintaxe são indicados como propriedades de classe. Para saber mais, confira about_Classes.
  • Schema.Mof file: recursos DSC baseados em MOF definem seu esquema em um schema.mof arquivo, usando o Formato de Objeto Gerenciado.

Para recuperar a sintaxe de um recurso DSC, use o cmdlet Get-DSCResource com o parâmetro Syntax . Isso é como usar Get-Command com o parâmetro Syntax para obter a sintaxe do cmdlet. A saída mostra o modelo usado para um bloco de recursos de DSC em uma configuração de DSC.

Get-DscResource -Syntax Service
Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DesktopInteract = [bool]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupTimeout = [UInt32]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Ignore | Running | Stopped }]
    [TerminateTimeout = [UInt32]]
}

Como a sintaxe do cmdlet, as teclas entre colchetes são opcionais. Os tipos especificam o tipo de dados esperado por cada chave.

Para garantir que o Spooler serviço esteja em execução:

$SharedDscParameters = @{
    Name = 'Service'
    ModuleName = 'PSDscResources'
    Property = @{
        Name  = 'Spooler'
        State = 'Running'
    }
}
$TestResult = Invoke-DscResource -Method Test @SharedDscParameters
if ($TestResult.InDesiredState) {
    Write-Host -ForegroundColor Cyan -Object 'Already in desired state.'
} else {
    Write-Host -ForegroundColor Magenta -Object 'Enforcing desired state.'
    Invoke-DscResource -Method Set @SharedDscParameters
}

A $SharedDscParameters variável é uma tabela de hash que contém os parâmetros usados ao chamar os métodos Test e Set do recurso com Invoke-DscResource. A primeira chamada a Invoke-DscResource usa o método Test para verificar se o Spooler serviço está em execução e armazena o resultado na $TestResult variável .

A próxima etapa depende se o serviço já está no estado desejado. É recomendável sempre verificar o estado desejado antes de impor e chamar apenas o método Set quando necessário. No exemplo, o script grava uma mensagem no console sobre se o recurso DSC está no estado desejado. Em seguida, se o serviço não estiver em execução, ele chamará Invoke-DscResource com o método Set para impor o estado desejado.