Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.