【问题标题】:DSC Custom Resource DependenciesDSC 自定义资源依赖项
【发布时间】:2016-05-01 16:39:15
【问题描述】:

在 DSC 中,我如何创建自定义模块(PowerShell 5 DSC 类或 MOF + 脚本)并表示它需要/依赖另一个 DSC 资源(例如 PowerShell Gallery 中的 xBlah)。

在 chef 中,我可以将这些依赖项放在我的 metadata.rb 文件中,以表达食谱间的依赖关系。有没有办法在 DSC 中表达资源间的依赖关系?

【问题讨论】:

    标签: powershell dsc powershell-5.0


    【解决方案1】:

    您需要在自定义资源中实现 DependsOn 关键字。然后,您可以在配置中使用它来定义依赖项。一般格式为:

    DependsOn = "[DSC Resource type] Name of the block"
    

    您甚至可以将多个依赖项指定为数组,如下面的配置示例所示:

    DependsOn = @(“[WindowsFeature]HyperV”,
                          “[File]VHDFolder”)
    

    使用参考:Configuring Dependencies in "Desired State Configuration" script in PowerShell

    另一个更贴切的参考: DSC 201 – Custom Actions

    【讨论】:

    • 通过实现,您的意思是在自定义资源类中设置该属性?
    • @Jeff 很抱歉造成混乱。我的意思是在使用自定义资源创建配置时使用 DependsOn 属性。我正在使用更好的参考链接更新答案。如果您仍然遇到问题,请告诉我。如果这有帮助,请接受作为答案。
    • 那么使用自定义资源的配置需要知道自定义资源自身的依赖关系,即使它们没有直接暴露?这没有意义……
    • @Jeff 我的意思是在自定义资源本身内部不会定义任何依赖项。当您使用自定义资源并创建“配置”时,DependsOn 属性可用。在创建配置的过程中,您只能提及此自定义资源中的操作发生,请确保其他资源的其他操作已完成。为此,您在使用自定义资源创建的配置中使用 DependsOn。
    • 在 PowerShell DSC 中添加 afaik,没有在自定义资源定义中定义依赖项的方法。也不应该按照设计来做。如果您希望任何模块存在,那么在您的自定义资源中,您可以使用安装和导入模块 cmdlet,并将 ErrorAction 设置为继续(如果模块已经存在),例如:Install-Module -Name "yourModuleName" -ErrorAction SilentlyContinue。但是,如果您希望显示另一个模块的配置,那么您必须在 DSC 配置中应用DependsOn,正如我在答案中描述的那样。我希望这会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2018-04-01
    • 2017-07-07
    相关资源
    最近更新 更多