嵌套来自不同文件的PowerShell DSC配置

Modified on: Fri, 16 Aug 2019 11:00:02 +0800

如果我将DSC配置嵌套在这样的单个文件中,它可以正常工作:

Configuration Secondary {
    Param ($SomeParameter)

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

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

MyConfiguration

Start-DscConfiguration .\MyConfiguration -Wait -Verbose

我想将配置拆分为两个单独的文件。一个将点源另一个包括配置。

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

由于某些原因,这不会获取传递给辅助配置的参数,因此会导致错误:

. .\Secondary.ps1

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

MyConfiguration

Start-DscConfiguration .\MyConfiguration -Wait -Verbose

它似乎很奇怪,它在同一个文件中有效但在点源时不起作用。我认为点源与在同一文件中包含代码基本相同。我在这里错过了什么?

作者:Richard

最佳答案

如果要引用未在同一文件中定义的其他配置的配置,则需要使用复合资源模式。

在模块中,您将创建一个DscResources文件夹。在该文件夹中,您将创建一个模块来保存复合配置。复合配置将在扩展名为.schema.psm1的文件中定义。该文件将需要一个指向schema.psm1文件的模块清单作为根模块。

有关更多详细信息和示例,请查看PowerShell团队博客 - http://blogs.msdn.com/b/powershell/archive/2014/02/25/reusing-existing-configuration-scripts-在-的powershell期望的状态-configuration.aspx


相关问答

添加新评论