Configurações DSC
Aplica-se a: Windows PowerShell 4.0, Windows PowerShell 5.0
As configurações DSC são scripts do PowerShell que definem um tipo especial de função. Para definir uma configuração utilize 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 da configuração
Um script de configuração é composto por estas partes:
- O bloco Configuration. É o bloco de script externo. Para defini-lo, use a palavra-chave Configuration e forneça um nome. Nesse caso, o nome da configuração é
MyDscConfiguration
. - Um ou mais blocos de Nó. Definem os nós (computadores ou máquinas virtuais) que você está configurando.
Na configuração acima, há um bloco node direcionado a um computador chamado
TEST-PC1
. O bloco Nó pode aceitar vários nomes de computador. - Um ou mais blocos de recurso. É onde a configuração define as propriedades para os recursos que estão sendo configurados. Nesse caso, há dois blocos de recursos, cada um dos quais chama o recurso WindowsFeature .
Observação
O Recurso DSC do 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.
Dentro de um bloco de configuração, é possível fazer qualquer coisa que normalmente poderia ser feita em uma função do PowerShell. No exemplo anterior, se você não quiser codificar o nome do computador de destino na configuração, poderá adicionar um parâmetro para o nome do nó.
Neste exemplo, você especifica o nome do nó passando-o como o parâmetro ComputerName quando compila a configuração. O nome usa localhost
como padrão .
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName='localhost'
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
O bloco Nó também pode aceitar vários nomes de computador. No exemplo acima, você pode usar o parâmetro -ComputerName
ou passar uma lista de computadores separados por vírgula diretamente ao bloco Nó.
MyDscConfiguration -ComputerName "localhost", "Server01"
Ao especificar uma lista de computadores para o bloco 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
Para poder aplicar uma configuração, você precisa compilá-la em um documento MOF. Faça isso chamando a configuração como você chamaria uma função do PowerShell. A última linha do exemplo contendo somente o nome da configuração, chama a configuração.
Observação
Para chamar uma configuração, a função precisa estar no escopo global (como acontece com qualquer outra função do PowerShell). Isso pode ser feito por meio de "dot-sourcing" do script ou ao executar o script de configuração usando F5 ou clicando no botão Executar Script no ISE. Para fazer o dot-source do script, execute o comando . .\myConfig.ps1
, em que 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
- Uma pasta no diretório atual com o mesmo nome que a configuração.
- 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ó, será criado um arquivo MOF para cada nó.
Observação
O arquivo MOF contém todas as informações de configuração para o nó de destino. Por isso, é 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 utilizar um parâmetro, como no segundo exemplo, ele precisará ser fornecido no tempo de compilação. A aparência deveria ser esta:
. .\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
Uso de novos recursos na sua configuração
Se você executou os exemplos anteriores, talvez tenha notado que foi informado que estava usando um recurso sem importá-lo explicitamente. Atualmente, a DSC vem 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 em $env:PSModulePath
e reconhecidos adequadamente pelo Get-DscResource, ainda precisam ser carregados na sua configuração.
Import-DscResource é uma palavra-chave dinâmica que pode ser reconhecida apenas dentro de um bloco Configuração, não se trata de um cmdlet. O Import-DscResource dá suporte a dois parâmetros:
- ModuleName é a forma recomendada de usar o Import-DscResource. Aceita o nome do módulo que contém os recursos que serão importados (assim como uma matriz de cadeia de caracteres de nomes de módulos).
- Name é o nome do recurso que será importado. Não é o nome amigável gerado como "Name" pelo Get-DscResource, mas o nome de classe usado na hora de definir o esquema de recurso (gerado como ResourceType pelo Get-DscResource).
Para saber mais sobre como usar Import-DSCResource
, confira Usando Import-DSCResource
Diferenças entre o PowerShell v4 e v5
Há diferenças quanto ao local em que os recursos DSC precisam ser armazenados no PowerShell 4.0. Para saber mais, confira Local do recurso.
Consulte Também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de