Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткий обзор
Определяет, как применить состояние для экземпляра ресурса DSC.
Метаданные
SchemaDialect: https://json-schema.org/draft/2020-12/schema
SchemaID: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1.0/resource/manifest.set.json
Type: object
Описание
Чтобы управлять экземпляром с помощью DSC, ресурс DSC должен определить set
свойство в своем манифесте. Это свойство определяет, как DSC может принудительно применять текущее состояние экземпляра.
Если это свойство не определено, DSC может только получить текущее состояние экземпляров и проверить, находятся ли они в нужном состоянии. DSC не может принудительно применить требуемое состояние для ресурса.
DSC отправляет данные в команду тремя способами:
- Если
input
имеет значениеstdin
, DSC отправляет данные в виде строки, представляющей данные в виде сжатого объекта JSON без пробелов или новых линий между свойствами объекта. - Если
input
имеет значениеenv
, DSC отправляет данные в виде переменных среды. Он создает переменную среды для каждого свойства объекта входных данных, используя имя и значение свойства . -
args
Если массив содержит определение входного аргумента JSON, DSC отправляет данные в виде строки, представляющей данные в виде сжатого объекта JSON в указанный аргумент.
Если вы не определяете input
свойство и не определяете входной аргумент JSON, DSC не сможет передать входной JSON в ресурс. Для команды можно определить только один входной аргумент JSON.
Необходимо определить input
свойство, один входной аргумент JSON в массиве args
свойств или оба.
Примеры
Пример 1. Полное определение
Этот пример из Microsoft.Windows/Registry
ресурса DSC.
"set": {
"executable": "registry",
"args": [
"config",
"set"
],
"input": "stdin",
"implementsPretest": true,
"return": "state"
}
Он определяет executable
как registry
, а не registry.exe
как . Расширение не требуется, если операционная система распознает команду как исполняемый файл.
Манифест определяет два аргумента: config
и set
. Значение свойства указывает, что set
команда ожидает входные данные в виде большого input
двоичного объекта JSON от stdin
.
В сочетании со значением executable
DSC вызывает метод set для этого ресурса, выполнив следующую команду:
{ ... } | registry config set
Так как манифест определяет implementsPretest
как true
, DSC не будет вызывать test
метод для ресурса перед вызовом set
. Этот параметр указывает, что сам ресурс проверяет экземпляры перед применением требуемого состояния.
Манифест определяет return
как state
, указывая, что он возвращает окончательное состояние ресурса только после set
выполнения метода. DSC сравнивает требуемое состояние с возвращаемыми данными этого ресурса, чтобы определить, к каким свойствам ресурса set
применяется метод , если таковые есть.
Обязательные свойства
Определение set
должно включать следующие свойства:
Свойства
исполняемый файл
Свойство 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 и как строку в определенный аргумент. - Если вы определяете входной аргумент JSON без определения
input
свойства, DSC передает входные данные JSON только в виде строки в определенный аргумент.
Если вы не определяете input
свойство и не определяете входной аргумент JSON, DSC не сможет передать входной JSON в ресурс. Это делает манифест недопустимым. Необходимо определить input
свойство, входной аргумент JSON в массиве args
свойств или и то, и другое.
Type: object
RequiredProperties: [jsonInputArg]
input
Свойство input
определяет способ передачи входных данных в ресурс. Если это свойство не определено и определение не определяет входной аргумент JSON, DSC не отправляет входные данные ресурсу при вызове set
операции.
Значение этого свойства должно быть одной из следующих строк:
env
— указывает, что ресурс ожидает, что свойства экземпляра будут указаны в качестве переменных среды с одинаковыми именами и регистром.Этот параметр поддерживает только следующие типы данных для свойств экземпляра:
boolean
integer
number
string
-
array
значенийinteger
-
array
значенийnumber
-
array
значенийstring
Для значений, не являющихся массивами, DSC присваивает переменной среды указанное значение "как есть". Если тип данных является массивом значений, DSC задает переменную среды в виде строки с разделителями-запятыми. Например, свойство
foo
со значением[1, 2, 3]
сохраняется в переменнойfoo
среды как"1,2,3"
.Если ресурс должен поддерживать сложные свойства со значением
object
или многотипными массивами, задайте для него значениеstdin
.stdin
— указывает, что ресурс ожидает большой двоичный объект JSON, представляющий экземпляр изstdin
. JSON должен соответствовать схеме экземпляра для ресурса.
Type: string
Required: false
ValidValues: [env, stdin]
implementsPretest
Свойство implementsPretest
определяет, проверяет ли ресурс, находится ли экземпляр в нужном состоянии внутренне перед применением требуемого состояния. Присвойте этому свойству значение , true
когда ресурс проверяет экземпляр в рамках set
операции. Присвойте этому свойству значение , false
если это не так.
Если это значение равно false
, это означает, что пользователи должны всегда вызывать dsc resource test
экземпляр перед вызовом dsc resource set
команды для ресурса.
Значение по умолчанию — false
.
Type: boolean
Required: false
Default: false
handlesExist
Свойство handlesExist
определяет, имеет ли ресурс встроенную обработку свойства _exist в set
операции. Значение по умолчанию — false
.
Присвойте этому свойству значение , true
если ресурс соответствует следующим требованиям реализации:
-
Схема экземпляра ресурса определяет
_exist
свойство как допустимое свойство экземпляра. - Команда ресурса обрабатывает создание, обновление и удаление экземпляра
set
на основе текущего состояния экземпляра и значения_exist
свойства в нужном состоянии.
Если этому свойству true
присвоено значение , ресурс указывает, что у него есть возможностьSetHandlesExist. При обработке SetHandlesExist
ресурсов с возможностью в конфигурации DSC вызывает set
операцию для ресурса, когда экземпляр определяет _exist
как false
. Без этой возможности ресурс должен определить операцию удаления для поддержки удаления экземпляров ресурса.
Если манифест ресурса не определяет это свойство как true
и не определяет delete
операцию, DSC вызывает ошибку при обнаружении экземпляра ресурса с _exist
значением false
.
return
Свойство return
определяет, как DSC должен обрабатывать выходные данные для этого метода. Значение этого свойства должно быть одной из следующих строк:
-
state
— указывает, что ресурс возвращает только окончательное состояние экземпляра после операции задания в виде большого двоичного объекта JSON. -
stateAndDiff
— указывает, что ресурс возвращает конечное состояние экземпляра и массив имен свойств, измененных ресурсом.
Значение по умолчанию — state
.
Type: string
Required: false
Default: state
ValidValues: [state, stateAndDiff]