DSC 资源清单导出属性架构参考

摘要

定义如何检索 DSC 资源的每个实例的当前状态。

元数据

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

描述

可以使用单个命令枚举自身每个实例的基于命令的 DSC 资源应在其清单中定义 export 属性。 此属性定义 DSC 如何获取每个资源实例的当前状态。 定义此属性后,用户可以:

  • dsc config export 命令的输入配置中指定资源的实例,以生成一个可用配置文档。
  • 使用 dsc 资源导出 命令指定资源,以生成定义资源的每个实例的配置文档。
  • 使用 dsc resource get 命令和 --all 选项指定资源,以返回资源的每个实例的当前状态。

当 DSC 调用此属性定义的命令时,资源必须以 JSON 行的形式返回每个实例的当前状态。 每个 JSON 行都应是表示实例的对象,并针对 定义的资源实例架构进行验证。

DSC 通过三种方式将数据发送到此命令:

  1. 当 为 stdininput,DSC 将数据作为字符串发送,将数据表示为压缩的 JSON 对象,对象属性之间没有空格或换行符。
  2. 当 为 envinput,DSC 将数据作为环境变量发送。 它使用 属性的名称和值,为输入数据对象中的每个属性创建环境变量。
  3. args当数组包含 JSON 输入参数定义时,DSC 将数据作为表示为压缩 JSON 对象的字符串发送到指定的参数。

如果未定义 input 属性且未定义 JSON 输入参数,则 DSC 无法将输入 JSON 传递给资源。 只能为命令定义一个 JSON 输入参数。

必须定义 input 属性和/或属性数组中的 args 一个 JSON 输入参数。

必需属性

定义 export 必须包含以下属性:

  • executable

属性

可执行文件

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

Type:     string
Required: true

args

属性 args 定义要传递给命令的参数列表。 参数可以是任意数量的字符串。 如果要将表示资源的属性包的 JSON 对象传递给参数,可以将数组中的单个项定义为 [JSON 对象],用字符串属性指示参数 jsonInputArg 的名称,以及参数对于具有 mandatory 布尔属性的命令是否是必需的。

Type:     array
Required: false
Default:  []
Type:     [string, object(JSON Input Argument)]

字符串参数

参数数组中的任何项都可以是表示要传递给命令的静态参数的字符串,如 config--format

Type: string

JSON 输入参数

定义命令的参数,该参数接受 JSON 输入对象作为字符串。 DSC 将 JSON 输入传递到命名参数(如果可用)。 JSON 输入参数定义为具有以下属性的 JSON 对象:

  • jsonInputArg (需要) - 将 JSON 数据传递给命令的参数,例如 --input
  • mandatory (可选) - 指示 DSC 是否应始终将参数传递给命令,即使命令没有 JSON 输入也是如此。 在这种情况下,DSC 会将空字符串传递给 JSON 输入参数。

每个参数数组只能定义一个 JSON 输入参数。

如果为命令定义 JSON 输入参数和 input 类型,DSC 将双向发送 JSON 数据:

  • 如果将 定义为 inputenv 和 JSON 输入参数,DSC 会为 JSON 输入中的每个属性设置环境变量,并将 JSON 输入对象作为字符串传递给定义的参数。
  • 如果将 定义为 inputstdin 和 JSON 输入参数,DSC 会将 JSON 输入传递给 stdin,并将 JSON 输入作为字符串传递给定义的参数。
  • 如果在未定义 属性的情况下 input 定义 JSON 输入参数,DSC 仅将 JSON 输入作为字符串传递给定义的参数。

如果未定义 input 属性且未定义 JSON 输入参数,则 DSC 无法将输入 JSON 传递给资源。 这会使清单无效。 必须在属性数组中args定义 input 属性和/或 JSON 输入参数。

Type:                object
RequiredProperties: [jsonInputArg]

input

属性 input 定义如何将输入传递到资源。 如果未定义此属性,并且定义未定义 JSON 输入参数,则 DSC 在调用 export 操作时不会向资源发送任何输入。

此属性的值必须是以下字符串之一:

  • env - 指示资源需要将实例的属性指定为具有相同名称和大小写的环境变量。

    此选项仅支持实例属性的以下数据类型:

    • boolean
    • integer
    • number
    • string
    • array值的integer
    • array值的number
    • array值的string

    对于非数组值,DSC 按原样将环境变量设置为指定的值。 当数据类型是值数组时,DSC 会将环境变量设置为逗号分隔的字符串。 例如,值为 的 [1, 2, 3] 属性foo将作为 保存在环境变量"1,2,3"foo

    如果资源需要支持具有 object 值或多类型数组的复杂属性,请改为将此设置为 stdin

  • stdin - 指示资源需要一个表示 来自 stdin的实例的 JSON Blob。 JSON 必须遵循资源的实例架构。

Type:        string
Required:    false
ValidValues: [env, stdin]