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
, type
och 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