Dela via


Referens för dokumentfunktioner för DSC-konfiguration

Synopsis

Funktioner som är tillgängliga i ett konfigurationsdokument för körningsbearbetning.

Description

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 är enklare att underhålla.

För att DSC ska kunna identifiera en funktion måste den placeras inom hakparenteser i en sträng. Dokumentfunktioner för DSC-konfiguration 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 är omslutet med dubbla citattecken eller använder den vikta eller literala blocksyntaxen. När du använder syntaxerna för vikta eller literalblock ska du alltid använda indikatorn för blockkvävning (-) för att trimma avslutande radbrytningar och tomma linjer.

# 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 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 radbrytningar för att dela upp långa funktioner i ett mer läsbart format med den vikta eller literala blocksyntaxen.

# 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>)
    )
  )]

Exempel

Exempel 1 – Använd en funktion med giltiga syntaxer

Följande konfigurationsdokument visar de tre giltiga syntaxerna för att ange en funktion i ett konfigurationsdokument. I varje resursinstans text anges egenskapen till utdata för funktionen base64().

# overview.example.1.dsc.config.yaml
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
  - name: Double quoted syntax
    type: Test/Echo
    properties:
      text: "[base64('ab')]"
  - name: Folded block syntax
    type: Test/Echo
    properties:
      text: >-
        [base64('ab')]
  - name: Literal block syntax
    type: Test/Echo
    properties:
      text: |-
        [base64('ab')]
dsc --input-file overview.example.1.dsc.config.yaml config get
results:
- name: Double quoted syntax
  type: Test/Echo
  result:
    actualState:
      text: YWI=
- name: Folded block syntax
  type: Test/Echo
  result:
    actualState:
      text: YWI=
- name: Literal block syntax
  type: Test/Echo
  result:
    actualState:
      text: YWI=
messages: []
hadErrors: false

Exempel 2 – Sammanfoga två strängar

Följande konfigurationsdokument anger text egenskapen för resursinstansen till utdata från funktionen concat(), som kombinerar strängarna a och b till ab.

# overview.example.2.dsc.config.yaml
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
  - name: Echo the concatenated strings 'a' and 'b'
    type: Test/Echo
    properties:
      text: "[concat('a', 'b')]"
dsc --input-file overview.example.2.dsc.config.yaml config get
results:
- name: Echo the concatenated strings 'a' and 'b'
  type: Test/Echo
  result:
    actualState:
      text: ab
messages: []
hadErrors: false

Exempel 3 – Använda kapslade funktioner

Följande konfigurationsdokument visar hur du kan kapsla funktioner. De första två 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 djupt kapslade funktioner som visas i den tredje instansen till base64.

# overview.example.3.dsc.config.yaml
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
  - name: Echo the concatenated strings 'a' and 'b' as base64
    type: Test/Echo
    properties:
      text: "[base64(concat('a', 'b'))]"
  - name: Echo the concatenated strings 'c' and 'd' as base64
    type: Test/Echo
    properties:
      text: "[base64(concat('c', 'd'))]"
  - name: Echo the concatenated base64 of strings 'ab' and 'cd'
    type: Test/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: Test/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 --input-file overview.example.3.dsc.config.yaml config get
results:
- name: Echo the concatenated strings 'a' and 'b' as base64
  type: Test/Echo
  result:
    actualState:
      text: YWI=
- name: Echo the concatenated strings 'c' and 'd' as base64
  type: Test/Echo
  result:
    actualState:
      text: Y2Q=
- name: Echo the concatenated base64 of strings 'ab' and 'cd'
  type: Test/Echo
  result:
    actualState:
      text: YWI=Y2Q=
- name: Echo the concatenated base64 of strings 'ab' and 'cd' as base64
  type: Test/Echo
  result:
    actualState:
      text: WVdJPVkyUT0=
messages: []
hadErrors: false

Functions

Följande avsnitt innehåller tillgängliga DSC-konfigurationsfunktioner efter syfte och indatatyp.

Matrisfunktioner

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 fler värden av samma typ.
  • min() – Returnera det minsta heltalsvärdet från en matris med heltal.
  • max() – Returnera det största heltalsvärdet från en matris med heltal.

Datafunktioner

Följande lista över funktioner fungerar på data utanför en resursinstans:

  • envvar() – Returnera värdet för en angiven miljövariabel.
  • parameters() – Returnera värdet för en angiven konfigurationsparameter.

Matematikfunktioner

Följande lista över funktioner fungerar på heltalsvärden eller matriser med heltalsvärden:

  • add() – Returnera summan av två heltal.
  • div() – Returnera utdelningen för två heltal som ett heltal och släpp resten av resultatet, om det finns några.
  • int() – Konvertera en sträng eller ett tal med en bråkdel till ett heltal.
  • max() – Returnera det största värdet från en matris med heltal.
  • min() – Returnera 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 att referera till eller vara beroende av.

Strängfunktioner

Följande lista över funktioner är till för att manipulera strängar:

  • base64() – Returnera base64-representationen av en sträng.
  • concat() – Returnerar en kombinerad sträng där indatasträngarna sammanfogas i den ordning de anges.

Typfunktioner

Följande lista över funktioner skapar eller konverterar värden av en viss typ:

  • createArray() – Skapa en matris av en viss typ från noll eller fler värden av samma typ.
  • int() – Konvertera en sträng eller ett tal med en bråkdel till ett heltal.