Referência da propriedade de esquema do manifesto do recurso DSC
Sinopse
Define como recuperar o esquema JSON que valida uma instância de recurso DSC.
Metadados
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
Descrição
Cada recurso DSC baseado em comando deve definir a schema
propriedade em seu manifesto. Essa propriedade define como a DSC pode obter o esquema JSON necessário para validar instâncias do recurso.
O esquema JSON pode ser definido dinamicamente com a propriedade command ou estaticamente com a propriedade inserida .
Para fins de desenvolvimento, pode ser mais conveniente usar a command
propriedade e evitar a necessidade de ajustar o código e o esquema.
A Microsoft recomenda usar a embedded
propriedade ao publicar um recurso publicamente. Quando o manifesto declara o esquema com a propriedade , o command
DSC chama o comando no início de qualquer operação usando o recurso, possivelmente afetando o desempenho. O esquema também não está disponível para integrar ferramentas quando o recurso não está instalado localmente. Quando o esquema é inserido no manifesto, o DSC e as ferramentas de integração só precisam do manifesto em si.
Exemplos
Exemplo 1 – Obter esquema JSON com um comando
Este exemplo é do Microsoft.Windows/Registry
recurso DSC.
"schema": {
"command": {
"executable": "registry",
"args": ["schema"]
}
}
Com a propriedade definida, o command
DSC obtém o esquema JSON para validar instâncias desse recurso com o seguinte comando:
registry schema
Exemplo 2 – Esquema JSON inserido
Este exemplo é do Microsoft/OSInfo
recurso DSC. Ele define um esquema JSON inserido que o DSC usa para validar uma instância do recurso.
"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"] }
}
}
}
Propriedades obrigatórias
A schema
definição deve incluir exatamente uma destas propriedades:
Propriedades
.
A command
propriedade define como a DSC deve chamar o recurso para obter o esquema JSON que valida suas instâncias. O valor dessa propriedade deve ser um objeto e definir a executable
propriedade .
Ao publicar um manifesto com a propriedade , a command
Microsoft recomenda publicar o esquema JSON em um URI disponível publicamente e definir a url
propriedade para esse URI. Isso permite que ferramentas de criação e outros aplicativos de integração validem instâncias sem executar o comando localmente.
Type: object
RequiredProperties: [executable]
executável
A executable
propriedade define o nome do comando a ser executado. O valor deve ser o nome de um comando detectável na variável de ambiente do PATH
sistema ou o caminho completo para o comando. Uma extensão de arquivo só é necessária quando o comando não é reconhecível pelo sistema operacional como um executável.
Type: string
Required: true
args
A args
propriedade define uma matriz de cadeias de caracteres a serem passadas como argumentos para o comando . A DSC passa os argumentos para o comando na ordem em que são especificados.
Type: array
Required: false
Default: []
incorporado
A embedded
propriedade define o esquema JSON completo para dsc para validar instâncias do recurso DSC. O valor dessa propriedade deve ser um esquema JSON válido que define as $schema
palavras-chave , type
e properties
.
Type: object
MinimumPropertyCount: 1
url
A url
propriedade define a URL para o esquema JSON publicado do recurso. Ele é usado pela integração de ferramentas para recursos que definem a command
propriedade em vez da embedded
propriedade .
Type: string
Format: uri