> 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/piattaforma/cache.md).

# Cache

## Cache a livello di server

PowerShell Universal offre la possibilità di utilizzare una cache a livello di server per archiviare i dati che utilizza tra API, Automation e Dashboard. Può configurare la durata degli elementi della cache utilizzando il cmdlet `Set-PSUCache` in qualsiasi script PowerShell eseguito in PowerShell Universal. Può inoltre recuperare elementi dalla cache utilizzando `Get-PSUCache`.

Alcuni esempi di utilizzo della cache possono essere:

* Raccogliere dati con un processo pianificato e visualizzarli all'interno di una dashboard
* Raccogliere dati da un'API e utilizzarli in un processo
* Raccogliere l'input da una dashboard e metterlo in coda per l'esecuzione in un processo pianificato

#### Impostare elementi nella cache

Per impostare elementi nella cache, può utilizzare `Set-PSUCache`. Gli elementi nella cache vengono serializzati in stringhe utilizzando CLIXML e il serializzatore di PowerShell. Quando recupera gli oggetti dalla cache, non saranno più oggetti attivi.

```powershell
Set-PSUCache -Key "CurrentDate" -Value (Get-Date)
```

Esistono tre tipi di tecniche di invalidazione della cache che può utilizzare.

#### Scadenza assoluta

Il parametro `AbsoluteExpiration` definisce a quale ora l'elemento nella cache viene invalidato.

L'esempio seguente invalida l'elemento della cache dopo 10 minuti.

```powershell
Set-PSUCache -Key "CurrentDate" -Value (Get-Date) -AbsoluteExpiration (Get-Date).AddMinutes(10)
```

#### Scadenza assoluta a partire da adesso

Il parametro `AbsoluteExpirationFromNow` definisce quando un elemento della cache viene invalidato utilizzando un TimeSpan anziché un DateTime calcolato.

Il seguente elemento della cache viene invalidato tra 1 ora.

```powershell
Set-PSUCache -Key "CurrentDate" -Value (Get-Date) -AbsoluteExpirationFromNow ([TimeSpan]::FromHours(1))
```

#### Scadenza scorrevole

Il parametro `SlidingExpiration` le consente di definire il periodo di tempo prima che l'elemento della cache venga invalidato. Ogni volta che si accede all'elemento della cache, il timer viene reimpostato.

Il seguente elemento della cache verrà invalidato tra 5 minuti. Se vi si accede entro tali 5 minuti, verrà reimpostato per altri 5 minuti.

```powershell
Set-PSUCache -Key "CurrentDate" -Value (Get-Date) -SlidingExpiration ([TimeSpan]::FromMinutes(5))
```

## Ottenere elementi dalla cache

Può utilizzare il cmdlet `Get-PSUCache` per recuperare elementi dalla cache. È sufficiente fornire la chiave dell'elemento che desidera recuperare. L'oggetto deserializzato verrà restituito dal cmdlet.

```powershell
Get-PSUCache -Key "CurrentDate"
```

## Cache persistente

Può utilizzare il parametro `-Persist` di `Set-PSUCache` per archiviare i dati all'interno del database. Ciò consente una cache distribuita e una cache che sopravviverà ai riavvii del servizio PowerShell Universal.

```powershell
Set-PSUCache -Key "CurrentDate" -Value (Get-Date) -Persist
```

### Svuotare la cache

Può rimuovere elementi dalla cache utilizzando `Remove-PSUCache` o `Clear-PSUCache` .

```powershell
# Remove a specific item
Remove-PSUCache -Key 'Key123'

# Clear the entire cache
Clear-PSUCache
```

## Scope $Cache

API, script di Automation e Dashboard supportano tutti uno scope $Cache. Questo scope viene utilizzato per memorizzare nella cache i dati tra i runspace che persisteranno nella memoria di ciascuno degli ambienti di esecuzione.

Ad esempio, se imposta una variabile $Cache in una dashboard, questa non sarà disponibile in un'API. Ciò non è vero quando si utilizza l'ambiente Integrated. Se una dashboard e un'API utilizzano entrambe l'ambiente integrato, condividono lo scope della cache.

Può impostare e recuperare i dati dallo scope della cache utilizzando la sintassi di assegnazione e recupero delle variabili.

```powershell
$Cache:MyValue = "Hello"
Write-Host $Cache:MyValue
```

Scope `$Cache` e cache a livello di server: lo scope `$Cache` differisce dalla cache a livello di server poiché risiede solo nell'ambiente di esecuzione della funzionalità che sta utilizzando. Sono diversi e non possono essere utilizzati per ottenere l'altro.

## Visualizzare la cache

Può visualizzare la cache a livello di server nella console di amministrazione navigando in Platform \ Cache.

<figure><img src="/files/H5Zmh0i3DnWRBEy7SIMW" alt=""><figcaption><p>Visualizzazione dei dati memorizzati nella cache</p></figcaption></figure>

## API

* [Get-PSUCache](/powershell-universal/it/comandi-powershell/get-psucache.md)
* [Set-PSUCache](/powershell-universal/it/comandi-powershell/set-psucache.md)
* [Remove-PSUCache](/powershell-universal/it/comandi-powershell/remove-psucache.md)
* [Clear-PSUCache](/powershell-universal/it/comandi-powershell/clear-psucache.md)


---

# 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/piattaforma/cache.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.
