DSC 资源清单架构属性参考

概要

定义如何检索验证 DSC 资源实例的 JSON 架构。

元数据

SchemaDialect: https://json-schema.org/draft/2020-12/schema
SchemaID:      https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1.0/resource/manifest.schema.json
Type:          object

DESCRIPTION

每个基于命令的 DSC 资源都必须在其清单中定义 schema 属性。 此属性定义 DSC 如何获取验证资源实例所需的 JSON 架构。

可以使用 command 属性动态定义 JSON 架构,也可以使用 embedded 属性静态定义 JSON 架构。

出于开发目的,使用 command 该属性会更方便,并且无需同时调整代码和 schema。

Microsoft 建议在公开发布资源时使用该 embedded 属性。 当清单使用属性声明架构 command 时,DSC 会在使用资源的任何作开始时调用该命令,这可能会影响性能。 当资源未在本地安装时,该架构也不适用于集成工具。 当架构嵌入到清单中时,DSC 和集成工具只需要清单本身。

例子

示例 1 - 使用命令获取 JSON 架构

此示例来自 Microsoft.Windows/Registry DSC 资源。

"schema": {
  "command": {
    "executable": "registry",
    "args": ["schema"]
  }
}

command定义属性后,DSC 使用以下命令获取 JSON 架构以验证此资源的实例:

registry schema

示例 2 - 嵌入式 JSON 架构

此示例来自 Microsoft/OSInfo DSC 资源。 它定义了 DSC 用于验证资源实例的嵌入式 JSON 架构。

"schema": {
  "embedded": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "OSInfo",
    "type": "object",
    "required": [],
    "properties": {
      "$id": { "type": "string" },
      "architecture": { "type": ["string","null"] },
      "bitness": { "$ref": "#/definitions/Bitness" },
      "codename": { "type": ["string","null"] },
      "edition": { "type": ["string","null"] },
      "family": { "$ref": "#/definitions/Family" },
      "version": { "type": "string" }
    },
    "additionalProperties": false,
    "definitions": {
      "Bitness": { "type": "string", "enum": ["32","64","unknown"] },
      "Family": { "type": "string", "enum": ["Linux","macOS","Windows"] }
    }
  }
}

必需属性

定义 schema 必须恰好包含以下属性之一:

属性

指令

command 属性定义 DSC 必须如何调用资源来获取验证其实例的 JSON 架构。 此属性的值必须是一个对象并定义该 executable 属性。

使用该属性发布清单 command 时,Microsoft 建议将 JSON 架构发布到与 $id 实例架构的属性匹配的公开可用 URI。 这使得创作工具和其他集成应用程序无需在本地运行命令即可验证实例。

Type:               object
RequiredProperties: [executable]

可执行

executable 属性定义要运行的命令的名称。 该值必须是可在系统 PATH 环境变量中发现的命令的名称或命令的完整路径。 仅当作系统无法将命令识别为可执行文件时,才需要文件扩展名。

Type:     string
Required: true

参数

args 属性定义要作为参数传递给命令的字符串数组。 DSC 按参数指定的顺序将参数传递给命令。

Type:     array
Required: false
Default:  []

嵌入式

embedded 属性定义 DSC 的完整 JSON 架构,以验证 DSC 资源的实例。 此属性的值必须是定义 $schematypeproperties 关键字的有效 JSON 架构。

Type:                 object
MinimumPropertyCount: 1