【问题标题】:DSC Package resource have identical key propertiesDSC 包资源具有相同的关键属性
【发布时间】:2016-03-24 16:28:59
【问题描述】:

我正在尝试先卸载一个软件包,然后安装该软件包的最新版本。您会认为很简单,但是当我在 DSC 配置中包含以下代码时:

    ### remove old product setup
    Package removeOldProduct {
        Ensure = 'Absent'
        Name = 'My Product Name'
        Path = ""
        ProductId = ""
    }
    ### now install the latest product setup
    Package productSetup {
        Ensure = 'Present'
        Name = 'My Product Name'
        Path = "$productShare\Repository\product.msi"
        ProductId = ""
        Arguments = "ACCEPT_EULA=1 /q"
        DependsOn = '[Package]MsSql'
    }

在创建 .mof 文件时,我收到以下错误:

Test-ConflictingResources:在节点“myNodeServer”中检测到资源“[Package]productSetup 和 '[Package]removeOldProduct”之间存在冲突。资源具有相同的关键属性,但有 以下非关键属性的差异:'Path;Ensure;Arguments'。

我不想使用脚本资源来处理我的卸载。我在这里做错了什么?

【问题讨论】:

    标签: powershell dsc


    【解决方案1】:

    您的配置通常应该是幂等的,所以这没有多大意义。每次应用配置时(每 30 分钟或任何设置),您都将卸载并重新安装软件包。

    MSI 安装程序应支持自动升级,这意味着您只需确保安装(更新的)MSI。

    【讨论】:

    • 我的意图是卸载旧版本的软件包,然后安装产品的最新版本(正在不断更新开发中)。这是一个更好的问题:Package 资源是否会检查 .msi 文件是否包含完全相同的安装?我对此表示怀疑。我的理解是,Package 资源只会在 Package 不存在时安装,而不是在过期时安装。
    • 为了澄清,我正在设置一个 QA VM 的配置,它将获取最新的 Dev .msi 文件并自动将它们安装在 QA vm 上。
    • @SamersSalib 如果你输入了一个产品 ID,并且在更新包时产品 ID 发生了变化,那么它可能会起作用。您还可以查看xPSDesiredStateConfiguration 模块中的xPackage 资源,它具有额外的参数(如Version),可能会使此运行更顺畅。你现在这样做的方式是不正确的,无论软件包是否更新,都会导致不断的卸载和重新安装。
    • “可能有效。”不满意,我正在处理的产品没有产品 ID。但是,Version 参数正是我要找的!!!谢谢@briantist。这回答了我的问题。
    • 哎呀!!最新的 DSC 版本(3.9.0.0 在此评论的时间戳之前 6 天发布!)在其 xPackage 资源中不包含 Version 属性,尽管 github 页面在其文档中声称。 @briantist
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多