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

# Interaktion

Universal Apps ermöglicht das Erstellen interaktiver Websites mit PowerShell. Es wurden mehrere Cmdlets implementiert, um dem Benutzer Feedback zu geben, Komponenten zu aktualisieren und den Zustand von Komponenten auszulesen.

## Zwischenablage

Sie können Zeichenfolgendaten mit `Set-UDClipboard` in die Zwischenablage des Benutzers schreiben.

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

#### API

* [Set-UDClipboard](/powershell-universal/de/powershell-befehle/set-udclipboard.md)

## Downloads

Sie können einen Download im Browser des Benutzers mit `Start-UDDownload` starten. Aufgrund der Sicherheit von Webbrowsern muss der Benutzer eine Aktion ausführen (z. B. auf eine Schaltfläche klicken), damit der Download stattfinden kann. `Start-UDDownload` ist nicht für große Dateidownloads geeignet.

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

## Event Handler

Viele Komponenten unterstützen Event Handler in Form von Skriptblöcken. Sie werden möglicherweise auch als Endpoints bezeichnet, da sie in Universal Dashboard v2 so genannt wurden. Diese Event Handler ermöglichen es Ihnen, PowerShell-Skripte auszuführen, wenn bestimmte Aktionen auf der Seite stattfinden.

Beispielsweise könnten Sie einen Schaltflächenklick haben, der einen Event Handler aufruft. Diese Schaltfläche zeigt beim Klicken einen Toast an. Sie können jedes gültige PowerShell-Cmdlet innerhalb des Event-Handler-Codes einbinden.

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

### Variablengültigkeitsbereich

Variablen werden automatisch in Event Handler übernommen. Sie können innerhalb des Event Handlers auf Variablen zugreifen, die Sie außerhalb davon definieren.

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

### Ereignisdaten

Einige Event Handler stellen Daten als Zeichenfolge oder als Hashtable bereit. Das hängt vom verwendeten Event Handler ab. Beispielsweise stellt der `New-UDButton`-`-OnClick`-Event-Handler keine Daten bereit. Der `New-UDSelect`-`-OnChange`-Event-Handler hingegen stellt Ereignisdaten bereit.

Sie können auf die Ereignisdaten mit der Variablen `$Body` als Zeichenfolge (manchmal als JSON formatiert) oder mit der Variablen `$EventData` als Hashtable zugreifen.

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

## Formulare

### Ein Formular absenden

Sie können das Absenden eines Formulars mit dem Cmdlet `Invoke-UDForm` erzwingen. Optional können Sie eine Validierung erzwingen, indem Sie den Parameter `-Validate` einbinden.

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

### Ein Formular validieren

Sie können die Validierung eines Formulars mit `Test-UDForm` erzwingen.

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

Sie können JavaScript aus PowerShell mit dem Cmdlet `Invoke-UDJavaScript` aufrufen.

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

#### **API**

* [Invoke-UDJavaScript](/powershell-universal/de/powershell-befehle/invoke-udjavascript.md)

## Toast

### Einen Toast anzeigen

Sie können das Cmdlet `Show-UDToast` verwenden, um eine Toast-Nachricht zu erstellen, die auf der Webseite des Endbenutzers erscheint. Dies geschieht über einen Websocket und der Toast wird unmittelbar beim Aufruf angezeigt.

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

### Als Toast mit einem Symbol anzeigen

Toasts unterstützen Symbole als Zeichenfolgen. Sie können alle FontAwesome-v5-Symbole verwenden.

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

### Einen Toast ausblenden

Blendet einen Toast anhand der angegebenen ID aus.

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

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

### API

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

## Weiterleitung

Sie können Benutzer mit dem Cmdlet `Invoke-UDRedirect` auf andere Seiten weiterleiten. Dies geschieht über einen Websocket und die Weiterleitung erfolgt, sobald das Cmdlet aufgerufen wird.

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

`Invoke-UDRedirect` leitet bei Verwendung eines relativen Pfads automatisch auf Seiten im Dashboard weiter.

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

Wenn Sie auf einen lokalen Pfad außerhalb des Dashboards weiterleiten möchten, können Sie den Parameter `-Native` verwenden.

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

#### API

* [Invoke-UDRedirect](/powershell-universal/de/powershell-befehle/invoke-udredirect.md)

## Modal

Sie können ein Modal mit dem Cmdlet `Show-UDModal` öffnen. Es wird geöffnet, sobald Sie es aufrufen. Sie können beliebige Komponenten innerhalb des Modals einbinden.

Lesen Sie mehr über [Modals hier](/powershell-universal/de/apps/components/feedback/modal.md).

## Komponentenzustand verwalten

Sie können den Komponentenzustand dynamisch mit den UDElement-Befehlen verwalten.

### Komponentenzustand abrufen

Sie können den Zustand eines Elements mit `Get-UDElement` abrufen. Der Zustand wird als Hashtable zurückgegeben. Dies ist vor allem für Eingabekomponenten nützlich.

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

### Komponentenzustand festlegen

Alternativ können Sie den Komponentenzustand mit `Set-UDElement` festlegen. Sie müssen eine ID und eine Hashtable mit Eigenschaften angeben, die für die Komponente festgelegt werden sollen. Alle integrierten Komponenten unterstützen Set-UDElement.

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

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

### Eine Komponente entfernen

Sie können Komponenten mit `Remove-UDElement` von der Seite entfernen. Die Komponente erscheint dann nicht mehr auf der Seite.

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

### Eine Komponente hinzufügen

Fügen Sie einer bestehenden übergeordneten Komponente eine untergeordnete Komponente hinzu.

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

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

### Eine Komponente leeren

Sie können alle untergeordneten Komponenten einer Komponente mit `Clear-UDElement` entfernen.

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

### Eine Komponente neu laden

Einige Komponenten unterstützen das Neuladen. Sie können das Neuladen einer Komponente mit `Sync-UDElement` auslösen.

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

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

### Eine Komponente auswählen

Sie können eine Komponente mit `Select-UDElement` auswählen.

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

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

## PowerShell-Host-Integration

Dashboards werden direkt mit dem PowerShell-Host integriert, um Funktionen auf Basis von Standard-Cmdlets bereitzustellen.

### Read-Host

Die Verwendung des Cmdlets `Read-Host` führt dazu, dass im Dashboard des Benutzers ein Dialog angezeigt wird. Der eingegebene Text wird vom Cmdlet zurückgegeben.

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

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

### Get-Credential

Die Verwendung von `Get-Credential` führt dazu, dass ein Dialog angezeigt wird, der einen Benutzernamen und ein Passwort akzeptiert. Das Cmdlet gibt ein `PSCredential`-Objekt zurück.

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

<figure><img src="/files/3zJGiAsiSA7mYcvfFbIR" alt=""><figcaption></figcaption></figure>

### Write-Progress

Cmdlets, die den Fortschrittsstream verwenden, oder die Verwendung des Cmdlets `Write-Progress` führen dazu, dass ein Fortschrittsdialog angezeigt wird. Das Popup zeigt die Aktivität, den Prozentsatz der Fertigstellung und den aktuellen Vorgang an.

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

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

Sie können die Write-Progress-Integration deaktivieren, indem Sie `$ProgressPreference` auf `SilentlyContinue` setzen.

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

### Prompt For Choice

Sie können die Funktion `$Host.UI.PromptForChoice` verwenden, um einen Mehrfachauswahl-Dialog anzuzeigen.

```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/uOLedBIyrmLwaKMytFNr" alt=""><figcaption></figcaption></figure>

### Write-Host

`Write-Host` innerhalb von Apps schreibt in die Registerkarte „Log“ in der Admin-Konsole für die App. Wenn Sie diese Protokollmeldungen in der Konsole Ihres Browsers in den Entwicklertools erhalten möchten, können Sie die Konsolenprotokollierung in appsettings.json aktivieren.

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

## API

* [Get-UDElement](/powershell-universal/de/powershell-befehle/get-udelement.md)
* [Set-UDElement](/powershell-universal/de/powershell-befehle/set-udelement.md)
* [Clear-UDElement](/powershell-universal/de/powershell-befehle/clear-udelement.md)
* [Remove-UDElement](/powershell-universal/de/powershell-befehle/remove-udelement.md)
* [Sync-UDElement](/powershell-universal/de/powershell-befehle/sync-udelement.md)
* [Select-UDElement](/powershell-universal/de/powershell-befehle/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/de/apps/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.
