DSC 资源始终至少具有一项功能。 资源功能定义了可以为资源调用的作,以及资源在调用时的行为方式。
本文其余部分描述了可用的功能。
get
具备该 get 能力的资源支持通过 Get 作检索实例的当前状态。
当命令资源在其资源清单中定义所需的 get 属性时,它具备了这种能力。
set
具备该 set 能力的资源支持通过 Set 作强制实例的期望状态。 没有此功能的资源不能与 dsc 资源集 或 dsc 配置集 命令一起使用,除非它们在组中被定义 Microsoft.DSC/Assertion 为嵌套实例。
当命令资源在其资源清单中定义 了集合 属性时,它具备了这种能力。
setHandlesExist
具备该 setHandlesExist 功能的资源表示你可以使用 设置 作删除实例。 具备此能力的资源必须具有 _exist 的典范资源属性。 没有该 _exist 属性的资源永远没有这种能力。
当资源具有该 _exist 属性但没有 setHandlesExist 能力时:
- 如果资源具备该
delete能力,当实例的期望状态_exist定义为假时,DSC会调用删除作而非设置。 - 如果资源不具备该
delete能力,当实例的期望状态定义为 _exist' 为假时,DSC 会在 Set 作中报错。
当命令资源在其资源清单中定义了 set.handlesExist 属性 true 时,它具备了这种能力。
whatIf
具备该 whatIf 能力的资源表明你可以在假设模式下使用 Set 作,让资源返回如何在实际 Set 作中具体返回如何修改状态的信息。
当资源不具备此功能时,DSC会综合分析该资源如何改变实例,将该实例的 测试 结果转换为 集合 结果。 合成作无法显示潜在的问题或变化,而这些变化无法通过将 测试 作结果与资源的期望状态进行比较来确定。 例如,用于测试资源的凭证可能对该作有效,但没有实际修改系统状态的权限。 只有具备此能力的资源才能完整报告该资源是否以及如何改变系统状态。
当资源在其资源清单中定义 了 whatIf 属性时,它具备了这种能力。
测试
具备该 test 能力的资源表示其直接实现 测试 作。
具有此能力的资源必须具有 _inDesiredState 典范资源性质。
没有该 _inDesiredState 属性的资源永远没有这种能力。
当资源不具备此功能时,DSC会对该资源实例进行合成测试。 DSC通过以下方式进行合成测试:
- 调用资源的 获取 作以获取实例的实际状态。
- 对每个实例的期望状态进行综合测试,针对返回的实际状态进行测试。 综合检验采用严格的大小写区分等价原则。
- 如果某物业的期望状态和实际状态不相同,DSC会将该物业标记为超出预期状态。
- 如果有任何属性处于目标状态之外,DSC会报告整个实例不在目标状态。
合成测试无法涵盖所有资源行为。 例如,如果一个包资源允许用户定义包的版本范围, Get 作返回包的实际版本,例如 1.2.3。 如果用户指定了版本范围 ~1 (NPM 语法表示包应为最新发布的语义版本并带有主要版本 1),DSC 会将期望状态 ~1 与实际状态 1.2.3 进行比较,并认为包处于错误状态,即使 1.2.3 实际上是与版本引脚匹配的最新版本。
任何拥有无法严格大小写区分比较检查属性的资源都应该具备此功能。
命令资源在其资源清单中定义 测试 作时具备此能力。
删除
具备该 delete 功能的资源支持通过 删除 作和 dsc 资源删除 命令删除实例。
这种功能与该 setHandlesExist 性质并不互斥。 资源可以通过 Set作处理该_exist属性,并直接调用以dsc resource delete移除实例。
对于具有 能力且具有_exist典范资源性质的delete资源:
- 如果资源没有 setHandlesExist 功能,DSC 会调用该资源的 删除 作,而非 Set ,当期望状态定义
_exist为false时。 - 如果资源具备该
setHandlesExist能力,当期望状态_exist定义为false时,DSC 会调用该资源的 Set作。
具有 delete 该能力但不具备 _exist 典范资源属性的资源,必须实现其 Set 作来处理实例的移除。 没有该 _exist 属性,DSC无法推断存在语义。
当命令资源在其资源清单中定义 删除 属性时,它具备了这种能力。
导出
具备该 export 功能的资源支持通过 导出 作枚举该资源的每个实例。
您可以使用以下命令使用具备此功能的资源:
- DSC 配置导出 ,返回一个配置文件文档,代表输入文档中定义的每个资源实例的实际状态。
- DSC 资源导出 以返回表示每个输入资源实例实际状态的配置文件文档。
-
dsc resource get通过 --all 选项返回输入资源的每个实例的实际状态。
当命令资源在其资源清单中定义 导出 属性时,它具备了这种能力。
解析
具备该 resolve 功能的资源支持从外部来源解析嵌套资源实例。 该功能主要被 导入器资源 用于用户编写配置文件。
当命令资源在其资源清单中定义了 resolve 属性时,它具备了这种能力。