DSC 资源清单解析属性架构参考

概要

指示如何调用资源以从外部源解析嵌套配置文档。

元数据

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

描述

定义 DSC 如何调用 DSC 资源才能将外部源解析为嵌套的 DSC 配置文档。 为 导入程序资源定义此方法,并将清单根目录中的 类型 属性设置为 Import

DSC 以三种方式将数据发送到命令:

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

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

必须定义 input 属性、args 属性数组中的一个 JSON 输入参数,或同时定义这两个属性。

必需属性

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

性能

可执行

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 数据:

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

如果未定义 input 属性且未定义 JSON 输入参数,DSC 无法将输入 JSON 传递给资源。 这使得清单无效。 必须定义 input 属性、args 属性数组中的 JSON 输入参数,或同时定义这两个属性。

Type:                object
RequiredProperties: [jsonInputArg]

输入

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

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

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

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

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

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

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

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

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