> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/da/apps/custom-variable-scopes.md).

# Brugerdefinerede omfang

Brug cache-, page-, session- og UI-scopes i PowerShell Universal-apps til at dele tilstand eller interagere med tilsluttede browserelementer.

Universal Apps eksponerer brugerdefinerede PowerShell-providere til tilstand, der er afgrænset til en app, en browsersession, en side eller et forbundet UI-element. Brug det scope, der matcher den levetid og synlighed, Deres app kræver.

## UI-omfang

Omfanget `$UI:` giver direkte adgang til et element i den tilsluttede browser via dets id. Læs eller angiv dets tilstandsegenskaber ved hjælp af PowerShell-egenskabssyntaks i stedet for `Get-UDElement` eller `Set-UDElement`.

Brug `$UI:` kun i et app-slutpunkt eller en interaktiv handler med en aktiv browserforbindelse. Det kan ikke tilgå elementer fra REST-API'er, planlagte slutpunkter eller baggrundsarbejde uden en forbundet appklient.

```powershell
New-UDTextbox -Id 'Name'

New-UDButton -Text 'Show name' -OnClick {
    Show-UDToast -Message $UI:Name.value
}
```

Angiv en eller flere egenskaber på et element ved at tildele en egenskab direkte.

```powershell
$UI:Status.Text = 'Saved'
$UI:Status.Visible = $true
$UI:Status.Color = 'green'
```

Element-id'et følger `$UI:`, og egenskabsnavnet knyttes til komponentens tilstandsegenskab. Tekstfelter eksponerer f.eks. `value`, mens en typografikomponent eksponerer `Text`. Brug de tilstandsegenskaber, der understøttes af den komponent, De arbejder med.

Følgende direkte tildeling svarer til at kalde `Set-UDElement` med en hashtable med egenskaber:

```powershell
$UI:Status.Text = 'Saved'

# Equivalent to:
Set-UDElement -Id 'Status' -Properties @{ Text = 'Saved' }
```

## Cache-omfang

Cache-omfanget gemmer en variabel, der er tilgængelig for hvert slutpunkt i appen. Brug det til data, der deles af flere kontrolelementer, eller som er dyre at hente, f.eks. Active Directory-data eller ydeevnetællere.

Definer en cachevariabel med et præfiks og en kolonseparator, ligesom andre PowerShell-scopes.

```powershell
$Cache:Computers = Get-ADComputer
```

Når den er tildelt, er variablen `$Cache:Computers` tilgængelig i ethvert app-slutpunkt.

```powershell
New-UDGauge -Value $Cache:Computers.Length -ValueMinimum 0 -ValueMaximum 100
```

## Sideomfang

Sideomfang gemmer variabler for én browserfane eller ét vindue. Tilstanden fjernes, når den fane eller det vindue lukkes; åbning af appen i en anden fane starter et separat sideomfang.

```powershell
New-UDForm -Content {
    New-UDTextbox -Id 'Name'
} -OnSubmit {
    $Page:Name = $EventData.Name
    Sync-UDElement -Id 'Name'
}

New-UDDynamic -Content {
    New-UDTypography $Page:Name
}
```

## Sessionsomfang

Sessionsomfang gemmer variabler for én brugers app-session. En session begynder, når brugeren første gang besøger appen, og sessionen identificeres af en browser-cookie. Sessioner har en inaktiv timeout på 25 minutter.

```powershell
New-UDCheckbox -Label 'Show chart' -OnChange {
    $Session:ShowChart = $EventData
}
```

Når den er tildelt, er `$Session:ShowChart` tilgængelig i appens hændelseshandlere. Sessionsvariabler er ikke tilgængelige i REST API-slutpunkter eller planlagte slutpunkter.

```powershell
New-UDGrid -Content {
    if ($Session:ShowChart) {
        $Data = @(
            [PSCustomObject]@{ Name = 'Available'; Value = 75 }
            [PSCustomObject]@{ Name = 'Used'; Value = 25 }
        )

        New-UDChartJS -Type 'doughnut' -Data $Data -DataProperty Value -LabelProperty Name
    }
}
```

Sessionsvariabler ryddes, når sessionen afsluttes.

### Lagring af legitimationsoplysninger i session-scope

Session-omfang er nyttigt til legitimationsoplysninger, der kun må findes, mens en brugersession er aktiv. Det lader en app bede om administrative legitimationsoplysninger uden at bevare eller dele dem.

```powershell
if (-not $Session:AdminCredentials) {
    $Session:AdminCredentials = Get-Credential -Message 'Enter administrator credentials'
}

New-UDButton -Text 'Check ACL' -OnClick {
    try {
        $result = Invoke-Command -Credential $Session:AdminCredentials -ScriptBlock {
            Get-Acl C:\SensitiveFolder
        }

        Show-UDToast -Message 'ACL retrieved successfully' -BackgroundColor Green
        Set-UDElement -Id 'aclOutput' -Content {
            $result | Out-String
        }
    }
    catch {
        Show-UDToast -Message "Failed: $($_.Exception.Message)" -BackgroundColor Red
    }
}

New-UDElement -Tag 'pre' -Id 'aclOutput'
```

Legitimationsoplysninger i `$Session:AdminCredentials` bevares ikke på disken og deles ikke med andre brugere, og de ryddes, når sessionen slutter.

## Se også

* [Devolutions Academy - Brugerstatus/opdater brugeroplysninger](https://academy.devolutions.net/student/activity/3546046-part-5-user-status-refresh-user-details)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/powershell-universal/da/apps/custom-variable-scopes.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
