每个 DSC 资源都定义了如何管理该资源实例的一组属性。 资源将每个属性定义为其实例 JSON 模式的一部分。
当你定义一个资源实例用于直接调用作或在配置文档中时,DSC 会在调用该资源之前使用实例模式验证该数据。
如果你指定了无效的属性名称或属性的无效值,DSC 会报错,说明数据为何无效。
除非另有说明,对于任一属性:
- 你可以为资源实例的期望状态定义属性。
- 资源可以从系统中获取该属性的实际状态。
- 资源可以在系统上强制执行该属性的期望状态。
- 如果你不想管理,可以把该房产从目标状态中省略。
前面的列表描述了一种典型的资源属性。 然而,DSC识别某些属性的不同属性,这些属性可能会改变你如何使用该财产:
如果实例模式
x-dsc-key定义了属性子模式的关键词,true则该属性是一个 关键资源属性。 关键属性唯一标识系统中的资源实例,以防止配置文档中的冲突。更多信息请参见 关键属性 部分。
如果实例模式定义了关键字中的
required属性名称,则该属性是 必需的资源属性。 你 必须 在实例中定义该属性的期望状态。 如果省略该属性,DSC会因实例无效而报错。更多信息请参见 “必需属性 ”部分。
如果实例模式将属性子模式的关键字定义
readOnly为true,则该属性是 只读资源属性。 你无法为实例定义该属性的期望状态。 资源无法设置只读属性。 它只能返回该属性在实例上的实际状态。欲了解更多信息,请参见 只读属性 部分。
如果实例模式将属性子模式的关键字定义
writeOnly为true,属性是 只写入的资源属性。 资源从未返回该属性的值。 你可以用属性来控制资源的行为,而不是直接将属性的值映射到实例状态。更多信息请参见 “只写属性 ”部分。
此外,DSC 定义了一组规范性质,使资源能够参与 DSC 引擎的语义。 规范资源属性是可重用的子模式,表示资源遵循某些契约,使用资源时可以依赖这些契约。
关键资源属性
DSC 利用关键资源属性唯一标识系统中的资源实例。 如果你指定两个或多个具有相同密钥属性的资源实例,你就是在尝试管理同一实例不止一次。
配置文档中具有相同关键属性值的实例是 冲突实例。 绝不要在配置文档中定义冲突实例。 在未来的版本中,DSC 会对包含任何冲突实例的配置文档发出错误。
如果你为冲突实例定义不同的设置,DSC在每个 Set 作中调用每个冲突实例的资源。 在这种情况下,后续实例会覆盖配置文件中之前冲突实例定义的任何设置。
如果冲突实例的设置相同,资源仍会被调用,这会花费时间和资源却无益。
DSC 通过检查实例模式中的属性子模式来判断资源属性是否为关键属性。 如果子模式定义 x-dsc-key 关键字的值 true为 ,则该属性是一个关键属性。
所需资源属性
在定义资源实例时,可能需要一些属性。 一个实例如果没有定义所有必需属性,则是无效的。 DSC在调用资源作前验证实例定义。 当实例缺少任何所需属性时,DSC 会触发验证错误,无法调用该资源。
房产 总是需要的 。 DSC通过 required 检查实例模式中的关键字来判断资源属性是否为必需属性。 如果实例模式定义了关键词, required 且属性名称包含在关键字的数组中,那么该属性总是必需的。
房产可以 有条件 地要求。 资源可以有条件地要求带有 dependentRequires 该关键词或其他条件关键词的属性。 关于条件应用子模式的更多信息,请参见 条件模式验证。
只读资源属性
资源可以定义只读属性,描述资源可以检索但不能直接设置的实例信息。 例如,文件API通常不允许用户设置描述文件上次修改时间的属性。
一般来说,在定义实例的期望状态时,不应该包含只读属性。 不支持 Set 作的断言资源可以包含只读属性,用于验证条件行为的系统状态。
DSC通过检查实例模式中的属性子模式来判断资源属性是否为只读属性。 如果子模式定义 readOnly 关键字的值 true为 ,则该性质为只读。
只写资源属性
资源可以定义只写属性,影响资源的行为,但资源无法检索实例的实际状态。 例如,某个资源可能支持下载文件的凭证,但不会在输出中返回这些凭证。
DSC通过检查实例模式中的属性子模式来判断资源属性是否为只写属性。 如果子模式定义 writeOnly 关键字为值 true,则该性质仅写入。
规范资源属性
DSC 定义了一组子模式,代表具有明确行为和期望的可重用属性。 这些可重复使用的属性称为典型资源属性。
任何在实例模式中定义规范资源属性的资源,都必须遵守该规范属性定义的要求和行为。
有关可用典范属性的更多信息,请参见 DSC典范资源属性。