Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Sammanfattning
Funktioner som är tillgängliga i ett konfigurationsdokument för körningsbearbetning.
Beskrivning
DSC-konfigurationsdokument stöder användning av funktioner som DSC bearbetar vid körning för att fastställa värden för dokumentet. Med de här funktionerna kan du definiera konfigurationer som återanvänder värden och som är enklare att underhålla.
För att DSC ska känna igen en funktion måste den placeras inom hakparenteser i en sträng. Funktioner för DSC-konfigurationsdokument använder följande syntax:
[<function-name>(<function-parameters>...)]
När du använder funktioner i YAML måste du ange funktionen med ett strängvärde som omsluts av dubbla citattecken eller använder syntaxen för vikta eller literala block. När du använder syntaxerna för vikta eller literala block ska du alltid använda indikatorn för blockchomping (-) för att trimma avslutande radbrytningar och tomma rader.
# Double quoted syntax
<keyword>: "[<function-name>(<function-parameters>...)]"
# Folded block syntax
<keyword>: >-
[<function-name>(<function-parameters>...)]
# Literal block syntax
<keyword>: |-
[<function-name>(<function-parameters>...)]
Du kan kapsla funktioner med hjälp av utdata från en kapslad funktion som ett parametervärde för en yttre funktion. DSC bearbetar kapslade funktioner från den innersta funktionen till den yttersta funktionen.
[<outer-function-name>(<nested-function-name>(<nested-function-parameters>))]
Det kan vara svårt att läsa långa funktioner, särskilt när de är djupt kapslade. Du kan använda nya rader för att dela upp långa funktioner i ett mer läsbart format med syntaxen för vikta eller literala block.
# Multi-line folded block syntax
<keyword>: >-
[<outer-function-name>(
<nested-function-name>(
<deeply-nested-function-name>(<deeply-nested-function-parameters>)
)
)]
# Multi-line literal block syntax
<keyword>: |-
[<outer-function-name>(
<nested-function-name>(
<deeply-nested-function-name>(<deeply-nested-function-parameters>)
)
)]
När utdata från en funktion är en matris eller ett objekt kan du komma åt egenskaperna för objektet eller objekten i matrisen.
Om du vill komma åt egenskapen för ett utdataobjekt följer du den avslutande parentesen för funktionen med en punkt (.) och sedan namnet på den egenskap du vill komma åt. Du kan också komma åt egenskaperna för kapslade objekt och matriser.
# Accessing a top-level property syntax
<keyword>: "[<function-name>(<function-parameters>...).<property-name>]"
# Accessing a property nested in another object syntax
<keyword>: "[<function-name>(<function-parameters>...).<property-name>.<nested-property-name>]"
# Accessing a property nested in an array item syntax
<keyword>: "[<function-name>(<function-parameters>...)[<index>].<nested-property-name>]"
Om du vill komma åt ett specifikt objekt i en matrisutdata följer du den avslutande parentesen för funktionen med en inledande hakparentes ([), sedan heltalsindexet för det objekt du vill komma åt och sedan en avslutande hakparentes (]). Du kan också komma åt objekt i kapslade matriser.
# Accessing a top-level array item syntax
<keyword>: "[<function-name>(<function-parameters>...)[<index>]]"
# Accessing an array item nested in a property syntax
<keyword>: "[<function-name>(<function-parameters>...).<property-name>[<nested-array-index>]]"
# Accessing an array item nested in another array syntax
<keyword>: "[<function-name>(<function-parameters>...)[<index>][nested-array-index]]"
Exempel
Exempel 1 – Använd en funktion med giltiga syntaxer
I följande konfigurationsdokument visas de tre giltiga syntaxerna för att ange en funktion i ett konfigurationsdokument. I varje resursinstans är egenskapen inställd på text utdata från base64() funktionen.
# overview.example.1.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Double quoted syntax
type: Microsoft.DSC.Debug/Echo
properties:
text: "[base64('ab')]"
- name: Folded block syntax
type: Microsoft.DSC.Debug/Echo
properties:
text: >-
[base64('ab')]
- name: Literal block syntax
type: Microsoft.DSC.Debug/Echo
properties:
text: |-
[base64('ab')]
dsc config get --file overview.example.1.dsc.config.yaml
results:
- name: Double quoted syntax
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: YWI=
- name: Folded block syntax
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: YWI=
- name: Literal block syntax
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: YWI=
messages: []
hadErrors: false
Exempel 2 – Sammanfoga två strängar
I följande konfigurationsdokument anges egenskapen för resursinstansen text till utdata från funktionen concat() genom att kombinera strängarna a och b into ab.
# overview.example.2.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Echo the concatenated strings 'a' and 'b'
type: Microsoft.DSC.Debug/Echo
properties:
text: "[concat('a', 'b')]"
dsc config get --file overview.example.2.dsc.config.yaml
results:
- name: Echo the concatenated strings 'a' and 'b'
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: ab
messages: []
hadErrors: false
Exempel 3 – Använda kapslade funktioner
Följande konfigurationsdokument visar hur du kan kapsla funktioner. De två första resursinstanserna använder utdata från funktionen concat() som indata till funktionen base64().
Den tredje resursinstansen använder utdata från de kapslade funktionerna från de två första instanserna som indata till concat() funktionen. Den sista resursinstansen konverterar utdata från de djupt kapslade funktionerna som visas i den tredje instansen till base64.
# overview.example.3.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Echo the concatenated strings 'a' and 'b' as base64
type: Microsoft.DSC.Debug/Echo
properties:
text: "[base64(concat('a', 'b'))]"
- name: Echo the concatenated strings 'c' and 'd' as base64
type: Microsoft.DSC.Debug/Echo
properties:
text: "[base64(concat('c', 'd'))]"
- name: Echo the concatenated base64 of strings 'ab' and 'cd'
type: Microsoft.DSC.Debug/Echo
properties:
text: "[concat(base64(concat('a', 'b')), base64(concat('c', 'd')))]"
- name: Echo the concatenated base64 of strings 'ab' and 'cd' as base64
type: Microsoft.DSC.Debug/Echo
properties:
# text: "[base64(concat(base64(concat('a', 'b')), base64(concat('c', 'd'))))]"
text: >-
[base64(
concat(
base64(concat('a', 'b')),
base64(concat('c', 'd'))
)
)]
dsc config get --file overview.example.3.dsc.config.yaml
results:
- name: Echo the concatenated strings 'a' and 'b' as base64
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: YWI=
- name: Echo the concatenated strings 'c' and 'd' as base64
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: Y2Q=
- name: Echo the concatenated base64 of strings 'ab' and 'cd'
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: YWI=Y2Q=
- name: Echo the concatenated base64 of strings 'ab' and 'cd' as base64
type: Microsoft.DSC.Debug/Echo
result:
actualState:
text: WVdJPVkyUT0=
messages: []
hadErrors: false
Exempel 4 – Egenskaper för åtkomstobjekt och matrisobjekt
Följande konfigurationsdokument visar hur du kan komma åt egenskaperna för objekt och objekt i matriser. I exemplet används en delad parameterdefinitionsfil för att göra det enklare att referera till en enda datakälla i varje konfigurationsdokument.
Parameterfilen definierar två parametrar:
- Parametern
dataär ett komplext objekt. Egenskapenmessageär ett kapslat objekt. Egenskapenservicesär en kapslad matris. - Parametern
listär en komplex matris. Det tredje objektet i matrisen är ett objekt. Det fjärde objektet i matrisen är en kapslad matris.
# overview.example.4.dsc.parameters.yaml
parameters:
# Object parameter
data:
# Object property as string
name: Example 4
# Object property as integer
count: 1
# Object property as nested object
message:
text: Default message
level: info
context:
location: DC01
# Object property as array
services:
- web
- database
- application
# Array parameter
list:
# Array item as string
- first
# Array item as integer
- 2
# array item as object
- name: third
value: 3
# Array item as nested array
-
- Nested first
- Nested second
- name: Nested third
Det första konfigurationsdokumentet definierar en instans av resursen Microsoft.DSC.Debug/Echo för att visa hur du kan komma åt ett objekts egenskaper i ett konfigurationsdokument.
# overview.example.4.properties.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
# Minimal definition of the parameters
parameters:
data: { type: object }
list: { type: array }
resources:
- name: Access the properties of an object
type: Microsoft.DSC.Debug/Echo
properties:
output:
# Accessing output object
data: "[parameters('data')]"
# Accessing properties
data.name: "[parameters('data').name]" # string
data.count: "[parameters('data').count]" # integer
data.message: "[parameters('data').message]" # nested object
data.services: "[parameters('data').services]" # array
$params=overview.example.4.dsc.parameters.yaml
$config=overview.example.4.properties.dsc.config.yaml
dsc config --parameters-file $params get --file $config
results:
- metadata:
Microsoft.DSC:
duration: PT0.133791S
name: Access the properties of an object
type: Microsoft.DSC.Debug/Echo
result:
actualState:
output:
data:
count: 1
name: Example 4
message:
text: Default message
level: info
context:
location: DC01
services:
- web
- database
- application
data.name: Example 4
data.count: 1
data.message:
text: Default message
level: info
context:
location: DC01
data.services:
- web
- database
- application
Nästa konfigurationsdokument visar hur du kan komma åt egenskaper för kapslade objekt.
# overview.example.4.nested.properties.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
# Minimal definition of the parameters
parameters:
data: { type: object }
list: { type: array }
resources:
- name: Access the properties of a nested object
type: Microsoft.DSC.Debug/Echo
properties:
output:
data.message.text: "[parameters('data').message.text]"
data.message.level: "[parameters('data').message.level]"
data.message.context: "[parameters('data').message.context]"
data.message.context.location: "[parameters('data').message.context.location]"
$params=overview.example.4.dsc.parameters.yaml
$config=overview.example.4.nested.properties.dsc.config.yaml
dsc config --parameters-file $params get --file $config
results:
- metadata:
Microsoft.DSC:
duration: PT0.0760186S
name: Access the properties of an object
type: Microsoft.DSC.Debug/Echo
result:
actualState:
output:
data.message.text: Default message
data.message.level: info
data.message.context:
location: DC01
data.message.context.location: DC01
Följande konfigurationsdokument visar hur du kan komma åt objekt i en matris.
# overview.example.4.items.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
# Minimal definition of the parameters
parameters:
data: { type: object }
list: { type: array }
resources:
- name: Access items in an array
type: Microsoft.DSC.Debug/Echo
properties:
output:
# Accessing output array
list: "[parameters('list')]"
# Accessing array items
list[0]: "[parameters('list')[0]]" # string
list[1]: "[parameters('list')[1]]" # integer
list[2]: "[parameters('list')[2]]" # object
list[3]: "[parameters('list')[3]]" # nested array
$params=overview.example.4.dsc.parameters.yaml
$config=overview.example.4.items.dsc.config.yaml
dsc config --parameters-file $params get --path $config
results:
- metadata:
Microsoft.DSC:
duration: PT0.0750682S
name: Access items in an array
type: Microsoft.DSC.Debug/Echo
result:
actualState:
output:
list:
- first
- 2
- name: third
value: 3
- - Nested first
- Nested second
- name: Nested third
list[0]: first
list[1]: 2
list[2]:
name: third
value: 3
list[3]:
- Nested first
- Nested second
- name: Nested third
Följande konfigurationsdokument visar hur du kan komma åt objekt i en kapslad matris.
# overview.example.4.nested.items.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
# Minimal definition of the parameters
parameters:
data: { type: object }
list: { type: array }
resources:
- name: Access items in a nested array
type: Microsoft.DSC.Debug/Echo
properties:
output:
list[3][0]: "[parameters('list')[3][0]]"
list[3][1]: "[parameters('list')[3][1]]"
list[3][2]: "[parameters('list')[3][2]]"
$params=overview.example.4.dsc.parameters.yaml
$config=overview.example.4.nested.items.dsc.config.yaml
dsc config --parameters-file $params get --file $config
results:
- metadata:
Microsoft.DSC:
duration: PT0.1349442S
name: Access items in a nested array
type: Microsoft.DSC.Debug/Echo
result:
actualState:
output:
list[3][0]: Nested first
list[3][1]: Nested second
list[3][2]:
name: Nested third
Det sista konfigurationsdokumentet visar hur du kan använda syntaxerna för egenskaps- och objektåtkomst tillsammans för att komma åt värden i komplexa objekt.
# overview.example.4.mixed.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
# Minimal definition of the parameters
parameters:
data: { type: object }
list: { type: array }
resources:
- name: Access values in complex objects and arrays
type: Microsoft.DSC.Debug/Echo
properties:
output:
# Accessing array items of an object property
data.services[0]: "[parameters('data').services[0]]"
data.services[1]: "[parameters('data').services[1]]"
data.services[2]: "[parameters('data').services[2]]"
# Accessing properties of an object in an array
list[2].name: "[parameters('list')[2].name]"
list[2].value: "[parameters('list')[2].value]"
# Accessing the property of an object in a nested array
list[3][2].name: "[parameters('list')[3][2].name]"
$params=overview.example.4.dsc.parameters.yaml
$config=overview.example.4.mixed.dsc.config.yaml
dsc config --parameters-file $params get --file $config
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
# Minimal definition of the parameters
parameters:
data: { type: object }
list: { type: array }
resources:
- name: Access values in complex objects and arrays
type: Microsoft.DSC.Debug/Echo
properties:
output:
# Accessing array items of an object property
data.services[0]: "[parameters('data').services[0]]"
data.services[1]: "[parameters('data').services[1]]"
data.services[2]: "[parameters('data').services[2]]"
# Accessing properties of an object in an array
list[2].name: "[parameters('list')[2].name]"
list[2].value: "[parameters('list')[2].value]"
# Accessing the property of an object in a nested array
list[3][2].name: "[parameters('list')[3][2].name]"
Funktionen
Följande avsnitt innehåller tillgängliga DSC-konfigurationsfunktioner efter syfte och indatatyp.
Array-funktioner
Följande lista över funktioner fungerar på matriser:
- concat() – Kombinera flera matriser med strängar till en enda matris med strängar.
- createArray() – Skapa en matris av en viss typ från noll eller flera värden av samma typ.
- min() – Returnerar det minsta heltalsvärdet från en matris med heltal.
- max() – Returnera det största heltalsvärdet från en matris med heltal.
Funktioner för data
Följande lista över funktioner fungerar på data utanför en resursinstans:
- envvar() – Returnerar värdet för en angiven miljövariabel.
- parameters() – Returnerar värdet för en angiven konfigurationsparameter.
- variables() – Returnerar värdet för en angiven konfigurationsvariabel.
Matematiska funktioner
Följande lista över funktioner fungerar på heltalsvärden eller matriser med heltalsvärden:
- add() – Returnerar summan av två heltal.
- div() – Returnerar utdelningen av två heltal som ett heltal och tar bort resten av resultatet, om det finns något.
- int() – Konvertera en sträng eller ett tal med en bråkdel till ett heltal.
- max() – Returnerar det största värdet från en matris med heltal.
- min() – Returnerar det minsta värdet från en matris med heltal.
- mod() - Returnera resten från divisionen av två heltal.
- mul() – Returnera produkten från att multiplicera två heltal.
- sub() – Returnera skillnaden från att subtrahera ett heltal från ett annat.
Resursfunktioner
Följande lista över funktioner fungerar på resursinstanser:
- reference() – Returnera resultatdata för en annan resursinstans.
- resourceId() – Returnera ID:t för en annan resursinstans som ska refereras till eller vara beroende av.
Strängfunktioner
Följande lista med funktioner är till för att manipulera strängar:
- base64() – Returnera base64-representationen av en sträng.
- concat() – Returnera en kombinerad sträng där indatasträngarna sammanfogas i den ordning de anges.
Typfunktioner
I följande lista över funktioner skapar eller konverterar du värden av en viss typ:
- createArray() – Skapa en matris av en viss typ från noll eller flera värden av samma typ.
- int() – Konvertera en sträng eller ett tal med en bråkdel till ett heltal.