Configurações Nesting do PowerShell DSC de arquivos diferentes

6

Se eu aninho as configurações do DSC em um único arquivo como este, tudo funciona bem:

Configuration Secondary {
    Param ($SomeParameter)

    Environment Test {
        Name = $SomeParameter
        Value = "12345"
    }
}

Configuration MyConfiguration {
    Node localhost {
        Secondary TheSecondary {
            SomeParameter = "TestEnvVar"
        }
    }
}

MyConfiguration

Start-DscConfiguration .\MyConfiguration -Wait -Verbose

Eu quero dividir minha configuração em dois arquivos separados. Um vai pontuar o outro para incluir a configuração.

Secondary.ps1:

Configuration Secondary {
    Param ($SomeParameter)

    Environment Test {
        Name = $SomeParameter
        Value = "12345"
    }
}

Primary.ps1:

. .\Secondary.ps1

Configuration MyConfiguration {
    Node localhost {
        Secondary TheSecondary {
            SomeParameter = "TestEnvVar"
        }
    }
}

MyConfiguration

Start-DscConfiguration .\MyConfiguration -Wait -Verbose

Por algum motivo, isso não seleciona o parâmetro passado para a configuração secundária e, portanto, resulta no erro:

Could not find mandatory property Name. Add this property and try again.
    + CategoryInfo          : ObjectNotFound: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 6
    + PSComputerName        : localhost

Parece muito estranho que funcione quando estiver no mesmo arquivo, mas não quando estiver usando o ponto de origem. Eu pensei que o ponto-fonte era basicamente o mesmo que incluir código no mesmo arquivo. O que estou perdendo aqui?

    
por Richard 27.03.2014 / 19:57

3 respostas

5

Se você quiser referenciar uma configuração de outra configuração que não esteja definida no mesmo arquivo, será necessário usar o padrão de recurso composto.

Em um módulo, você criará uma pasta DscResources. Nessa pasta, você criará um módulo para manter suas configurações compostas. A configuração composta será definida em um arquivo com a extensão .schema.psm1. O arquivo exigirá um manifesto de módulo apontando para o arquivo schema.psm1 como o módulo raiz.

Para mais detalhes e um exemplo, confira o blog da equipe do PowerShell - link

    
por 15.04.2014 / 20:20
3

Splatting os parâmetros ajuda - o seguinte Primary.ps1 corrigido deve funcionar:

. .\Secondary.ps1

Configuration MyConfiguration {
    Node localhost {
        $params = @{ SomeParameter = "TestEnvVar" }
        Secondary TheSecondary @params
    }
}

MyConfiguration

Start-DscConfiguration .\MyConfiguration -Wait -Verbose
    
por 02.07.2015 / 21:56
0

Por essa resposta , ela excede os parâmetros no seguinte formato:

Node localhost {
    Secondary TheSecondary -SomeParameter "TestEnvVar"
}

Apenas para informação.

    
por 27.02.2018 / 08:39