DSC 配置文档资源实例架构

摘要

在配置文档中定义 DSC 资源实例。

元数据

SchemaDialect: https://json-schema.org/draft/2020-12/schema
SchemaID:      https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.resource.json
Type:          object

描述

resources DSC 配置文档的 属性始终至少包含一个 DSC 资源实例。 配置中的实例共同定义了 DSC 在计算机上可以获取、测试和设置的所需状态。

本文档介绍配置文档中有效 DSC 资源实例的 JSON 架构。

有关 DSC 资源的详细信息,请参阅 基于命令的 DSC 资源的剖析

必需属性

每个资源实例必须是定义以下属性的对象:

  • name
  • type

属性

name

name资源实例的 属性定义 DSC 资源实例的简短用户可读名称。 此属性在 DSC 配置文档中必须是唯一的。 如果任何资源实例共享同名,DSC 将引发错误。

实例名称必须是仅包含字母、数字和空格的非空字符串。

Type:          string
Required:      true
MinimumLength: 1
Pattern:       ^[a-zA-Z0-9 ]+$

类型

属性 type 标识实例的 DSC 资源。 此属性的值必须是资源的有效完全限定类型名称。 有关类型名称的详细信息,请参阅 DSC 资源完全限定的类型名称架构参考

Type:     string
Required: true
Pattern:  ^\w+(\.\w+){0,2}\/\w+$

properties

资源实例的 定义 properties 其所需状态。 此属性的值必须是 对象。 对于断言资源,该值可能是空对象 ({}) 。 DSC 使用 DSC 资源的实例架构来验证定义的属性。

Type:     object
Required: true

dependsOn

若要声明资源实例依赖于配置中的另一个实例,请 dependsOn 定义 属性。

此属性定义 DSC 资源实例的列表,DSC 在处理此实例之前必须成功处理这些实例。 此属性的每个值必须是配置中另一个实例的 resourceID () 函数 查找。 多个实例可以依赖于同一实例,但实例的每个依赖项在该实例的 属性中必须是唯一的 dependsOn

函数 resourceID() 使用以下语法:

"[resourceId('<resource-type-name>', '<instance-name>']"

<resource-type-name>type 依赖资源的 属性, <instance-name> 是依赖项的 name 属性。 在 YAML 格式的配置文档中添加依赖项时,始终将 resourceID() 查找用双引号括起来, (") 。

例如,此实例依赖于名为 Tailspin Key的资源实例Microsoft.Windows/Registry

- name: Tailspin Key
  type: Microsoft.Windows/Registry
  properties:
    keyPath: HKCU\tailspin
    _ensure: Present
- name: Update Tailspin Automatically
  type: Microsoft.Windows/Registry
  properties:
    keyPath:   HKCU\tailspin\updates
    valueName: automatic
    valueData:
      String: enable
  dependsOn:
    - "[resourceId('Microsoft.Windows/Registry', 'Tailspin Key')]"

注意

定义 嵌套资源实例的依赖项时,实例只能引用同一资源提供程序或组实例中的依赖项。 他们不能使用 resourceId() 函数在配置文档的顶层或在另一个提供程序或组实例内查找实例。

如果顶级实例依赖于嵌套实例,则改用 resourceId() 函数查找包含依赖项实例的提供程序或组的实例。

有关在配置文档中使用函数的详细信息,请参阅 DSC 配置文档函数参考。 有关 函数的详细信息 resourceId() ,请参阅 resourceId

Type:              array
Required:          false
ItemsMustBeUnique: true
ItemsType:         string
ItemsPattern:      ^\[resourceId\(\s*'\w+(\.\w+){0,2}\/\w+'\s*,\s*'[a-zA-Z0-9 ]+'\s*\)\]$