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

# Interazione

Universal Apps consente di creare siti web interattivi con PowerShell. Sono stati implementati diversi cmdlet per fornire feedback all'utente, aggiornare i componenti e leggere lo stato dei componenti.

## Appunti

È possibile inserire dati stringa negli appunti dell'utente con `Set-UDClipboard`.

```powershell
New-UDButton -Text 'Clipboard' -OnClick {
    Set-UDClipboard -Data 'Hello, there!'
}
```

#### API

* [Set-UDClipboard](/powershell-universal/it/comandi-powershell/set-udclipboard.md)

## Download

È possibile avviare un download all'interno del browser dell'utente utilizzando `Start-UDDownload`. A causa della sicurezza dei browser web, l'utente dovrà eseguire un'azione (come fare clic su un pulsante) per consentire l'esecuzione del download. `Start-UDDownload` non è adatto al download di file di grandi dimensioni.

```powershell
New-UDButton -Text 'Download' -OnClick {
    Start-UDDownload -StringData 'Hello, World!'
}
```

## Gestori di eventi

Molti componenti supportano i gestori di eventi sotto forma di blocchi di script. Potrebbe anche vederli indicati come endpoint, dato che è così che venivano chiamati in Universal Dashboard v2. Questi gestori di eventi consentono di richiamare script PowerShell quando si verificano determinate azioni nella pagina.

Ad esempio, potrebbe avere un clic su un pulsante che richiama un gestore di eventi. Questo pulsante mostrerà un toast quando viene cliccato. È possibile includere qualsiasi cmdlet PowerShell valido nel codice del gestore di eventi.

```powershell
New-UDButton -Text 'Click Me' -OnClick {
   Show-UDToast 'Hello!'
}
```

### Ambito delle variabili

Le variabili vengono automaticamente incluse nell'ambito dei gestori di eventi. Sarà in grado di accedere alle variabili definite all'esterno della variabile all'interno del gestore di eventi.

```powershell
$MyVariable = "Hello!"
New-UDButton -Text 'Click Me' -OnClick {
   Show-UDToast $MyVariable
}
```

### Dati dell'evento

Alcuni gestori di eventi forniscono dati come stringa o come hashtable. Questo dipende dal gestore di eventi che sta utilizzando. Ad esempio, il gestore di eventi `-OnClick` di `New-UDButton` non fornisce alcun dato. Al contrario, `-OnChange` di `New-UDSelect` fornirà i dati dell'evento.

È possibile accedere ai dati dell'evento utilizzando la variabile `$Body` per accedere ai dati come stringa (talvolta formattata come JSON) oppure come hashtable utilizzando la variabile `$EventData`.

```powershell
New-UDSelect -Option {
    New-UDSelectOption -Name 'One' -Value 1
    New-UDSelectOption -Name 'Two' -Value 2
    New-UDSelectOption -Name 'Three' -Value 3
} -OnChange { Show-UDToast -Message $EventData }
```

## Moduli

### Inviare un modulo

È possibile forzare l'invio di un modulo utilizzando il cmdlet `Invoke-UDForm`. Facoltativamente, può scegliere di applicare la convalida includendo il parametro `-Validate`.

```powershell
New-UDForm -Id 'form' -Content {
   New-UDTextbox -Id 'Text' -Label 'Submit Me'
} -OnSubmit {
   Show-UDToast "Hello!"
}

New-UDButton -Text "Submit Form" -OnClick {
   Invoke-UDForm -Id 'form'
}
```

### Convalidare un modulo

È possibile forzare la convalida di un modulo utilizzando `Test-UDForm`.

```powershell
New-UDForm -Id 'form' -Content {
   New-UDTextbox -Id 'Text' -Label 'Submit Me'
} -OnSubmit {
   Show-UDToast "Hello!"
} -OnValidate {
   New-UDValidationResult
}

New-UDButton -Text "Submit Form" -OnClick {
   Test-UDForm -Id 'form'
}
```

## JavaScript

È possibile richiamare JavaScript da PowerShell utilizzando il cmdlet `Invoke-UDJavaScript`.

```powershell
New-UDButton -Text 'Alert Me' -OnClick {
    Invoke-UDJavaScript -JavaScript 'alert("Hello!")'
}
```

#### **API**

* [Invoke-UDJavaScript](/powershell-universal/it/comandi-powershell/invoke-udjavascript.md)

## Toast

### Mostrare un toast

È possibile utilizzare il cmdlet `Show-UDToast` per creare un messaggio toast che apparirà nella pagina web dell'utente finale. Avviene tramite un websocket e mostrerà il toast immediatamente non appena viene richiamato.

```powershell
Show-UDToast -Message 'Hello, World!'
```

### Mostrare un toast con un'icona

I toast supportano le icone come stringhe. È possibile utilizzare tutte le icone FontAwesome v5.

```powershell
Show-UDToast -Icon "Ad" -Message "Test"
```

### Nascondere un toast

Nasconde un toast in base all'ID specificato.

```powershell
Show-UDToast -Message 'Hello, World!' -Id 'Toast' -Duration 30000

New-UDButton -Text 'Click' -OnClick {
    Hide-UDToast -Id 'Toast'
}
```

### API

* [Show-UDToast](/powershell-universal/it/comandi-powershell/show-udtoast.md)
* [Hide-UDToast](/powershell-universal/it/comandi-powershell/hide-udtoast.md)

## Reindirizzamento

È possibile reindirizzare gli utenti a pagine diverse utilizzando il cmdlet `Invoke-UDRedirect`. Avviene tramite un websocket e reindirizzerà non appena il cmdlet viene richiamato.

```powershell
Invoke-UDRedirect http://www.ironmansoftware.com
```

`Invoke-UDRedirect` reindirizzerà automaticamente alle pagine della dashboard quando si utilizza un percorso relativo.

```powershell
Invoke-UDRedirect '/page1' 
```

Se desidera reindirizzare a un percorso locale esterno alla dashboard, può utilizzare il parametro `-Native`.

```powershell
Invoke-UDRedirect '/publishedFolder/test.txt' -Native
```

#### API

* [Invoke-UDRedirect](/powershell-universal/it/comandi-powershell/invoke-udredirect.md)

## Modale

È possibile aprire una finestra modale utilizzando il cmdlet `Show-UDModal`. Si aprirà non appena lo richiama. È possibile includere qualsiasi componente desideri all'interno della modale.

Maggiori informazioni sulle [modali qui](/powershell-universal/it/app/components/feedback/modal.md).

## Gestione dello stato dei componenti

È possibile gestire lo stato dei componenti in modo dinamico utilizzando i comandi UDElement.

### Ottenere lo stato di un componente

È possibile ricevere lo stato di un elemento utilizzando `Get-UDElement` . Lo stato verrà restituito come hashtable. Questo è utile principalmente per i componenti di input.

```powershell
$Value = (Get-UDElement -Id 'txtExample').value
```

### Impostare lo stato di un componente

In alternativa, è possibile impostare lo stato di un componente utilizzando `Set-UDElement` . Dovrà specificare un ID e un hashtable di proprietà da impostare sul componente. Tutti i componenti integrati supportano Set-UDElement.

```powershell
New-UDTextbox -Id 'textbox'

New-UDButton -Text 'Click' -OnClick {
    Set-UDElement -Id 'textbox' -Properties @{
        Value = 'My Value'
    }
}
```

### Rimuovere un componente

È possibile rimuovere componenti dalla pagina utilizzando `Remove-UDElement` . Il componente non apparirà più nella pagina.

```powershell
Remove-UDComponent -Id 'txtExample'
```

### Aggiungere un componente

Aggiunge un componente figlio a un componente padre esistente.

```powershell
New-UDElement -Id 'myDiv' -Tag div

New-UDButton -Text 'Click' -OnClick {
    Add-UDElement -ParentId 'myDiv' -Content {
        New-UDTypography -Text 'Hi'
    }
}
```

### Svuotare un componente

È possibile rimuovere tutti i componenti figlio da un componente utilizzando `Clear-UDElement`.

```powershell
New-UDElement -Id 'myDiv' -Tag div

New-UDButton -Text 'Click' -OnClick {
    Add-UDElement -ParentId 'myDiv' -Content {
        New-UDTypography -Text 'Hi'
    }
    Add-UDElement -ParentId 'myDiv' -Content {
        New-UDTypography -Text 'Hi'
    }
    Add-UDElement -ParentId 'myDiv' -Content {
        New-UDTypography -Text 'Hi'
    }
}

New-UDButton -Text 'Clear' -OnClick {
    Clear-UDElement -Id 'myDiv'
}
```

### Ricaricare un componente

Alcuni componenti supportano il ricaricamento. È possibile attivare il ricaricamento di un componente utilizzando `Sync-UDElement`.

```powershell
New-UDDynamic -Id 'reloadMe' -Content {
    Get-Date
}

New-UDButton -Text 'Reload' -OnClick {
    Sync-UDElement -Id 'reloadMe'
}
```

### Selezionare un componente

È possibile selezionare un componente con `Select-UDElement`.

```powershell
New-UDElement -Id 'txt' -Tag input -Properties @{ type = text }

New-UDButton -Text 'Select' -OnClick {
    Select-UDElement -Id 'txt' -ScrollToElement
}
```

## Integrazione con l'host PowerShell

Le dashboard si integrano direttamente con l'host PowerShell per fornire funzionalità basate su cmdlet standard.

### Read-Host

L'utilizzo del cmdlet `Read-Host` farà apparire una finestra di dialogo nella dashboard dell'utente. Il testo inserito verrà restituito dal cmdlet.

```powershell
$Text = Read-Host 'Enter Some Text'
Show-UDToast $Text
```

<figure><img src="/files/0BPRQDNVU2QA9iMhoVFE" alt=""><figcaption></figcaption></figure>

### Get-Credential

L'utilizzo di `Get-Credential` farà apparire una finestra di dialogo che accetta un nome utente e una password. Il cmdlet restituirà un oggetto `PSCredential`.

```powershell
Get-Credential -UserName "adam"
```

<figure><img src="/files/BFDom46N138DmpaTNNgY" alt=""><figcaption></figcaption></figure>

### Write-Progress

I cmdlet che utilizzano il flusso di avanzamento o l'uso del cmdlet `Write-Progress` faranno apparire una finestra di dialogo di avanzamento. Il popup mostrerà l'attività, la percentuale completata e l'operazione corrente.

```powershell
1..100 | ForEach-Object {
    Write-Progress -PercentComplete $_ -Activity 'Processing...' -CurrentOperation "User $_"
    Start-Sleep -Milliseconds 500
}
```

<figure><img src="/files/6mhnCltYwIzLKpxcuHqV" alt=""><figcaption></figcaption></figure>

È possibile disabilitare l'integrazione con Write-Progress impostando `$ProgressPreference` su `SilentlyContinue`.

```powershell
$ProgressPreference = 'SilentlyContinue'
```

### Prompt For Choice

È possibile utilizzare la funzione `$Host.UI.PromptForChoice` per visualizzare una finestra di dialogo a selezione multipla.

```powershell
$Title = "Welcome"
$Info = "Just to Demo Prompt for Choice"

$options = [System.Management.Automation.Host.ChoiceDescription[]] @("Power", "Shell", "Quit")
[int]$defaultchoice = 2
$opt = $host.UI.PromptForChoice($Title , $Info , $Options, $defaultchoice)
switch ($opt) {
    0 { Show-UDToast "Power" }
    1 { Show-UDToast "Shell" }
    2 { Show-UDToast "Good Bye!!!" }
}
```

<figure><img src="/files/TMn4XeGtNNFJ9mk3CPQA" alt=""><figcaption></figcaption></figure>

### Write-Host

`Write-Host` all'interno delle app scriverà nella scheda Log della Console di amministrazione per l'app. Se desidera ricevere questi messaggi di log nella console del suo browser negli Strumenti per sviluppatori, può abilitare la registrazione nella console in appsettings.json.

```json
{
    "UniversalDashboard": {
        "ConsoleLog": true
    }
}
```

## API

* [Get-UDElement](/powershell-universal/it/comandi-powershell/get-udelement.md)
* [Set-UDElement](/powershell-universal/it/comandi-powershell/set-udelement.md)
* [Clear-UDElement](/powershell-universal/it/comandi-powershell/clear-udelement.md)
* [Remove-UDElement](/powershell-universal/it/comandi-powershell/remove-udelement.md)
* [Sync-UDElement](/powershell-universal/it/comandi-powershell/sync-udelement.md)
* [Select-UDElement](/powershell-universal/it/comandi-powershell/select-udelement.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/app/interaction.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.
