Dela via


Egenskapsreferens för DSC-resursmanifestets schema

Synopsis

Definierar hur du hämtar JSON-schemat som validerar en DSC-resursinstans.

Metadata

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

Description

Varje kommandobaserad DSC-resurs måste definiera schema egenskapen i sitt manifest. Den här egenskapen definierar hur DSC kan hämta det JSON-schema som krävs för att verifiera instanser av resursen.

JSON-schemat kan definieras dynamiskt med kommandoegenskapen eller statiskt med den inbäddade egenskapen.

I utvecklingssyfte kan det vara enklare att använda command egenskapen och undvika att behöva justera både koden och schemat.

Microsoft rekommenderar att du använder egenskapen embedded när du publicerar en resurs offentligt. När manifestet deklarerar schemat med command egenskapen anropar DSC kommandot i början av alla åtgärder som använder resursen, vilket kan påverka prestandan. Schemat är inte heller tillgängligt för integrering av verktyg när resursen inte är installerad lokalt. När schemat är inbäddat i manifestet behöver DSC och integreringsverktyg bara själva manifestet.

Exempel

Exempel 1 – Hämta JSON-schema med ett kommando

Det här exemplet kommer från DSC-resursen Microsoft.Windows/Registry .

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

Med egenskapen command definierad hämtar DSC JSON-schemat för att verifiera instanser av den här resursen med följande kommando:

registry schema

Exempel 2 – Inbäddat JSON-schema

Det här exemplet kommer från DSC-resursen Microsoft/OSInfo . Den definierar ett inbäddat JSON-schema som DSC använder för att verifiera en instans av resursen.

"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"] }
    }
  }
}

Obligatoriska egenskaper

Definitionen schema måste innehålla exakt en av dessa egenskaper:

Egenskaper

command

Egenskapen command definierar hur DSC måste anropa resursen för att hämta JSON-schemat som validerar dess instanser. Värdet för den här egenskapen måste vara ett objekt och definiera egenskapen executable .

När du publicerar ett manifest med command egenskapen rekommenderar Microsoft att du publicerar JSON-schemat till en offentligt tillgänglig URI och anger egenskapen till den url URI:n. På så sätt kan redigeringsverktyg och andra integrerande program validera instanser utan att köra kommandot lokalt.

Type:               object
RequiredProperties: [executable]

Körbara

Egenskapen executable definierar namnet på kommandot som ska köras. Värdet måste vara namnet på ett kommando som kan identifieras i systemets PATH miljövariabel eller den fullständiga sökvägen till kommandot. Ett filnamnstillägg krävs bara när kommandot inte känns igen av operativsystemet som en körbar fil.

Type:     string
Required: true

args

Egenskapen args definierar en matris med strängar som ska skickas som argument till kommandot. DSC skickar argumenten till kommandot i den ordning de anges.

Type:     array
Required: false
Default:  []

inbäddad

Egenskapen embedded definierar det fullständiga JSON-schemat för DSC för att verifiera instanser av DSC-resursen. Värdet för den här egenskapen måste vara ett giltigt JSON-schema som definierar nyckelorden $schema, typeoch properties .

Type:                 object
MinimumPropertyCount: 1

url

Egenskapen url definierar URL:en till resursens publicerade JSON-schema. Den används genom att integrera verktyg för resurser som definierar command egenskapen i stället för embedded egenskapen .

Type:   string
Format: uri