> 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/it/app/custom-variable-scopes.md).

# Ambiti personalizzati

Utilizzi gli scope cache, page, session e UI nelle app di PowerShell Universal per condividere lo stato o interagire con gli elementi del browser connesso.

Le Universal Apps espongono provider PowerShell personalizzati per lo stato con ambito limitato a un'app, a una sessione del browser, a una pagina o a un elemento dell'interfaccia utente connesso. Utilizzi lo scope corrispondente alla durata e alla visibilità richieste dalla sua app.

## Scope UI

Lo scope `$UI:` fornisce accesso diretto a un elemento nel browser connesso tramite il suo ID. Legga o imposti le sue proprietà di stato utilizzando la sintassi delle proprietà di PowerShell anziché `Get-UDElement` o `Set-UDElement`.

Utilizzi `$UI:` solo in un endpoint di app o in un gestore interattivo con una connessione al browser attiva. Non può accedere agli elementi da API REST, endpoint pianificati o processi in background senza un client dell'app connesso.

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

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

Imposti una o più proprietà su un elemento assegnando direttamente una proprietà.

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

L'ID dell'elemento segue `$UI:` e il nome della proprietà corrisponde alla proprietà di stato del componente. Per esempio, le caselle di testo espongono `value`, mentre un componente di tipografia espone `Text`. Utilizzi le proprietà di stato supportate dal componente con cui sta lavorando.

La seguente assegnazione diretta è equivalente alla chiamata di `Set-UDElement` con una hashtable di proprietà:

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

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

## Scope cache

Lo scope cache memorizza una variabile disponibile per ogni endpoint dell'app. Lo utilizzi per i dati condivisi da più controlli o costosi da recuperare, come i dati di Active Directory o i contatori delle prestazioni.

Come per gli altri scope di PowerShell, definisca una variabile di cache con un prefisso e i due punti come separatore.

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

Una volta assegnata, la variabile `$Cache:Computers` è disponibile in qualsiasi endpoint dell'app.

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

## Scope page

Lo scope page memorizza le variabili per una singola scheda o finestra del browser. Lo stato viene rimosso quando tale scheda o finestra viene chiusa; aprendo l'app in un'altra scheda si avvia uno scope page separato.

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

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

## Scope session

L'ambito Session memorizza le variabili per la sessione app di un singolo utente. Una sessione inizia quando l'utente visita l'app per la prima volta e viene identificata da un cookie del browser. Le sessioni hanno un timeout di inattività di 25 minuti.

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

Una volta assegnata, `$Session:ShowChart` è disponibile nei gestori di eventi dell'app. Le variabili di sessione non sono disponibili negli endpoint delle API REST né negli endpoint pianificati.

```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
    }
}
```

Le variabili di sessione vengono cancellate al termine della sessione.

### Memorizzazione delle credenziali nello scope session

Lo scope session è utile per le credenziali che devono esistere solo per la durata di una sessione utente attiva. Ciò consente a un'app di richiedere credenziali amministrative senza renderle persistenti o condividerle.

```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'
```

Le credenziali in `$Session:AdminCredentials` non vengono rese persistenti su disco né condivise con altri utenti e vengono cancellate al termine della sessione.

## Vedere anche

* [Devolutions Academy - Stato utente/aggiornamento dei dettagli utente](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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
