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

# Trigger

Lösen Sie PowerShell Universal-Skripte automatisch bei Ereignissen wie Job-Abschluss, Serverstart, Benutzeranmeldung, Git-Synchronisierung oder Änderungen des Computerstatus aus.

> Für Trigger ist eine [Lizenz](/powershell-universal/de/licensing.md) erforderlich.

Trigger starten PowerShell Universal-Skripte automatisch, wenn Plattformereignisse auftreten. Verwenden Sie sie für globale Fehlerbehandlung, Benachrichtigungen, Integrationen und ereignisgesteuerte Automatisierung.

> Durch Trigger ausgelöste Jobs starten keine weiteren Trigger. Trigger werden in `triggers.ps1` gespeichert.

## Trigger-Ereignisse

Sie können Trigger für die folgenden Ereignisse erstellen:

* Job Started, Cancelled, Completed, Completed with Error, Requesting Feedback, Failed und Timed Out
* App (Dashboard) Started, Stopped und Session Expired
* Event Hub Connected und Disconnected
* Health Check Failed
* Server Started und Stopping
* New User Login und User Login
* Verwendung eines widerrufenen App-Tokens
* API Authentication Failed und API Error
* Git Sync
* License Expired und License Expiring
* Computer Offline
* Notification Created

### Notification Created

Das Ereignis **Notification Created** wird ausgeführt, wenn PowerShell Universal über den Benachrichtigungsdienst oder die Notification API eine Benachrichtigung erstellt. Verwenden Sie es, um Plattformwarnungen an Systeme wie Teams, E-Mail, Ticketing oder Überwachungstools weiterzuleiten.

Das Trigger-Skript erhält die erstellte Benachrichtigung im Parameter `$Notification`. Sie enthält die Benachrichtigungs-ID, den Titel, die Beschreibung, die Ebene, den Erstellungszeitpunkt, den Quell-Job, das Skript, das Dashboard, die Lizenz, die Identität und, sofern verfügbar, den Stacktrace.

```powershell
param($Notification)

if ($Notification.Level.ToString() -eq 'Error') {
    Send-MailMessage -To 'operations@example.com' `
        -Subject $Notification.Title `
        -Body $Notification.Description
}
```

Erstellen Sie den Trigger unter **Automation > Triggers**, indem Sie **Notification Created** als Ereignistyp auswählen, oder definieren Sie ihn in einem Konfigurations-Repository:

```powershell
New-PSUTrigger `
    -Name 'Route error notifications' `
    -EventType NotificationCreated `
    -TriggerScript 'RouteNotification.ps1'
```

Benachrichtigungen, die beim Start eines ausgelösten Jobs erzeugt werden, lösen dieses Ereignis nicht aus. Dies verhindert, dass Benachrichtigungs-Trigger rekursiv weitere benachrichtigungsausgelöste Jobs erstellen.

### New User Login

Das Ereignis New User Login tritt auf, wenn ein Benutzer erstmals auf PowerShell Universal zugreift. Das Skript erhält einen `$User`-Parameter mit Benutzerinformationen.

```powershell
@{
    Name = 'username'
    Roles = @()
}
```

### User Login

Das Ereignis User Login tritt auf, wenn ein Benutzer auf PowerShell Universal zugreift. Das Skript erhält einen `$data`-Parameter mit Benutzerinformationen.

```powershell
@{
    UserName = 'username'
    RemoteIpAddress = ''
    LocalPort = ''
    RemotePort = ''
}
```

### Verwendung eines widerrufenen App-Tokens

Das Ereignis für widerrufene App-Tokens tritt auf, wenn ein widerrufenes App-Token verwendet wird. Das Skript erhält einen `$data`-Parameter, der den Inhalt des App-Tokens als Zeichenfolge enthält.

### Git Sync

Das Ereignis Git Sync tritt sowohl bei erfolgreichen als auch bei fehlgeschlagenen Git-Synchronisierungen auf. Das Skript erhält einen `$data`-Parameter mit dem Git-Status.

```csharp
public class GitStatus
{
    public long Id { get; set; }
    public string CommitId { get; set; }
    public DateTime Timestamp { get; set; }
    public TimeSpan SyncTime { get; set; }
    public int Changes { get; set; }
    public string Location { get; set; }
    public string Remote { get; set; }
    public GitStatusResult Result { get; set; }
    public string ResultMessage { get; set; }
    public string ComputerName { get; set; }
}
```

### Computer Offline

Das Ereignis Computer Offline stellt das Computerobjekt im Parameter `$Data` bereit.

```powershell
class Computer {
    [long]$Id
    [string]$Name
    [DateTime]$HeartBeat
    [ComputerStatus]$Status
    [bool]$Maintenance
    [bool]$Deleted
    [List[ComputerTag]]$Tags
    [string]$Version
    [DateTime]$FileSyncTimestamp
    [string]$DeploymentVersion
    [string]$DeploymentName
    [string]$GitSettings
    [string]$GitBranch
    [ComputerType]$Type
}
```

## Globale Trigger

Globale Trigger führen das zugewiesene Skript immer dann aus, wenn das ausgewählte Ereignis auftritt. Dieser Trigger führt zum Beispiel `Script.ps1` aus, sobald ein Job startet:

```powershell
New-PSUTrigger -Name 'Job started' -EventType JobStarted -TriggerScript 'Script.ps1'
```

## Ressourcen-Trigger

Ressourcen-Trigger werden nur ausgeführt, wenn ein Ereignis für die ausgewählte Ressource auftritt. Dieser Trigger wird zum Beispiel ausgeführt, wenn das ausgewählte Dashboard stoppt:

```powershell
New-PSUTrigger `
    -Name 'Dashboard stopped' `
    -EventType DashboardStopped `
    -TriggerScript 'Script.ps1' `
    -Dashboard 'Dashboard'
```

## Ereignis-Metadaten

Ein durch einen Trigger erstellter Job erhält Metadaten über das Ereignis, das ihn aufgerufen hat. Job-Trigger erhalten einen `$Job`-Parameter und Dashboard-Trigger erhalten einen `$Dashboard`-Parameter. Trigger für den Serverstatus erhalten keinen Parameter. Benachrichtigungs-Trigger erhalten `$Notification`.

```powershell
param($Job)
$Job
```

## Bedingungen

Verwenden Sie den Parameter `-Condition` von `New-PSUTrigger`, um zu bestimmen, ob der Trigger ausgeführt werden soll. Die Bedingung wird lokal auf dem Server ausgeführt und muss `$true` oder `$false` zurückgeben.

Diese Bedingung wird zum Beispiel nur ausgeführt, wenn die Umgebungsvariable `Environment` auf `production` gesetzt ist:

```powershell
New-PSUTrigger -Condition { $Env:Environment -eq 'production' }
```

## PowerShell-Cmdlets

Verwalten Sie Trigger mit `New-PSUTrigger`, `Get-PSUTrigger`, `Set-PSUTrigger` und `Remove-PSUTrigger`.


---

# 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/automatisierung/triggers.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.
