Configurações do DSC
Aplica-se a: Windows PowerShell 4.0, Windows PowerShell 5.0
As configurações do DSC são scripts do PowerShell que definem um tipo especial de função. Para definir uma configuração, utilize a Configuração da palavra-chave do PowerShell.
Configuration MyDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance {
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Guarde o script como um .ps1
ficheiro.
Sintaxe de configuração
Um script de configuração consiste nas seguintes partes:
- O bloco Configuração . Este é o bloco de scripts mais externo. Pode defini-la utilizando a palavra-chave Configuração e fornecendo um nome. Neste caso, o nome da configuração é
MyDscConfiguration
. - Um ou mais blocos de Nó . Estes definem os nós (computadores ou VMs) que está a configurar.
Na configuração acima, existe um bloco Node que visa um computador com o nome
TEST-PC1
. O bloco 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á a configurar. Neste caso, existem dois blocos de recursos, cada um dos quais chama o recurso WindowsFeature .
Nota
O Recurso do WindowsFeature DSC só está disponível em computadores Windows Server. Para computadores com um SO cliente, como Windows 11, tem de utilizar o WindowsOptionalFeature. Para obter mais informações, veja a secção "WindowsOptionalFeature" da documentação PSDscResources.
Num bloco de Configuração , pode fazer tudo o que normalmente puder numa função do PowerShell. No exemplo anterior, se 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, vai especificar o nome do nó ao transmiti-lo como o parâmetro ComputerName quando compila a configuração. O nome é predefinido para 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, pode utilizar o -ComputerName
parâmetro ou transmitir uma lista separada por vírgulas de computadores diretamente para o bloco Nó .
MyDscConfiguration -ComputerName "localhost", "Server01"
Ao especificar uma lista de computadores para o bloco Nó , a partir de uma Configuração, tem de utilizar a notação de matriz.
Configuration MyDscConfiguration
{
Node @('localhost', 'Server01')
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Compilar a configuração
Antes de poder decretar uma configuração, tem de compilá-la num documento MOF. Pode fazê-lo ao chamar a configuração como chamaria uma função do PowerShell. A última linha do exemplo que contém apenas o nome da configuração chama a configuração.
Nota
Para chamar uma configuração, a função tem de estar no âmbito global (como em qualquer outra função do PowerShell). Pode fazer com que isto aconteça ao "dot-sourcing" do script ou ao executar o script de configuração utilizando F5 ou clicando no botão Executar Script no ISE. Para executar o script de origem de pontos, execute o comando . .\myConfig.ps1
em que myConfig.ps1
é o nome do ficheiro de script que contém a sua configuração.
Quando chama a configuração, esta:
- Resolve todas as variáveis
- Cria uma pasta no diretório atual com o mesmo nome que a configuração.
- Cria um ficheiro com o nome NodeName.mof no novo diretório, onde NodeName é o nome do nó de destino da configuração. Se existir mais do que um nó, será criado um ficheiro MOF para cada nó.
Nota
O ficheiro MOF contém todas as informações de configuração do nó de destino. Por este motivo, é importante mantê-lo seguro. Para obter mais informações, veja Proteger o ficheiro MOF.
Compilar a 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, este tem de ser fornecido no momento da compilação. Eis o aspeto da seguinte forma:
. .\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
Utilizar novos recursos na configuração
Se tiver executado os exemplos anteriores, poderá ter reparado que foi avisado de que estava a utilizar um recurso sem o importar explicitamente. Atualmente, o DSC é fornecido com 12 recursos como parte do módulo PSDesiredStateConfiguration.
O cmdlet Get-DscResource pode ser utilizado para determinar que recursos estão instalados no sistema e disponíveis para utilização pelo LCM.
Assim que estes módulos tiverem sido colocados $env:PSModulePath
e forem devidamente reconhecidos pela Get-DscResource, ainda precisam de ser carregados na sua configuração.
Import-DscResource é uma palavra-chave dinâmica que só pode ser reconhecida num bloco de Configuração , não é um cmdlet. Import-DscResource suporta dois parâmetros:
- ModuleName é a forma recomendada de utilizar Import-DscResource. Aceita o nome do módulo que contém os recursos a importar (bem como uma matriz de cadeia de nomes de módulos).
- Nome é o nome do recurso a importar. Este não é o nome amigável devolvido como "Nome" por Get-DscResource, mas o nome da classe utilizado ao definir o esquema de recurso (devolvido como ResourceType por Get-DscResource).
Para obter mais informações sobre como utilizar Import-DSCResource
o , consulte Utilizar Import-DSCResource
Diferenças do PowerShell v4 e v5
Existem diferenças em que os recursos do DSC têm de ser armazenados no PowerShell 4.0. Para obter mais informações, veja Localização do recurso.
Consulte também
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários