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

# Trigger

Attivi automaticamente gli script di PowerShell Universal in occasione di eventi come il completamento di un job, l'avvio del server, l'accesso utente, la sincronizzazione git o le modifiche di stato

> I trigger richiedono una [licenza](/powershell-universal/it/licensing.md).

I trigger avviano automaticamente gli script di PowerShell Universal quando si verificano eventi della piattaforma. Li utilizzi per la gestione globale degli errori, le notifiche, le integrazioni e l'automazione basata sugli eventi.

> I job attivati da un trigger non avviano altri trigger. I trigger sono archiviati in `triggers.ps1`.

## Eventi dei trigger

È possibile creare trigger per i seguenti eventi:

* Job avviato, annullato, completato, completato con errore, richiesta di feedback, non riuscito e scaduto
* App (Dashboard) avviata, arrestata e sessione scaduta
* Event Hub connesso e disconnesso
* Controllo di integrità non riuscito
* Server avviato e in arresto
* Nuovo accesso utente e accesso utente
* Utilizzo di un token app revocato
* Autenticazione API non riuscita ed errore API
* Sincronizzazione Git
* Licenza scaduta e licenza in scadenza
* Computer offline
* Notifica creata

### Notifica creata

L'evento **Notifica creata** viene eseguito quando PowerShell Universal crea una notifica tramite il servizio di notifica o l'API di notifica. Lo utilizzi per indirizzare gli avvisi della piattaforma verso sistemi come Teams, email, ticketing o strumenti di monitoraggio.

Lo script del trigger riceve la notifica creata nel parametro `$Notification`. Include l'ID della notifica, il titolo, la descrizione, il livello, l'ora di creazione, il job di origine, lo script, la dashboard, la licenza, l'identità e lo stack trace quando disponibile.

```powershell
param($Notification)

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

Crei il trigger in **Automazione > Trigger** selezionando **Notifica creata** come tipo di evento, oppure lo definisca in un repository di configurazione:

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

Le notifiche generate quando viene avviato un job attivato da un trigger non sollevano questo evento. Ciò impedisce ai trigger di notifica di creare in modo ricorsivo altri job attivati da notifiche.

### Nuovo accesso utente

L'evento Nuovo accesso utente si verifica quando un utente accede per la prima volta a PowerShell Universal. Lo script riceve un parametro `$User` con le informazioni sull'utente.

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

### Accesso utente

L'evento Accesso utente si verifica quando un utente accede a PowerShell Universal. Lo script riceve un parametro `$data` con le informazioni sull'utente.

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

### Utilizzo di un token app revocato

L'evento relativo al token app revocato si verifica quando viene utilizzato un token app revocato. Lo script riceve un parametro `$data` contenente il contenuto del token app sotto forma di stringa.

### Sincronizzazione Git

L'evento Sincronizzazione Git si verifica sia per le sincronizzazioni Git riuscite sia per quelle non riuscite. Lo script riceve un parametro `$data` con lo stato di Git.

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

L'evento Computer offline fornisce l'oggetto computer nel parametro `$Data`.

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

## Trigger globali

I trigger globali eseguono lo script assegnato ogni volta che si verifica l'evento selezionato. Ad esempio, questo trigger esegue `Script.ps1` ogni volta che viene avviato un job qualsiasi:

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

## Trigger di risorsa

I trigger di risorsa vengono eseguiti solo quando un evento si verifica sulla risorsa selezionata. Ad esempio, questo trigger viene eseguito quando la dashboard selezionata si arresta:

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

## Metadati dell'evento

Un job creato da un trigger riceve i metadati relativi all'evento che lo ha richiamato. I trigger dei job ricevono un parametro `$Job` e i trigger delle dashboard ricevono un parametro `$Dashboard`. I trigger relativi allo stato del server non ricevono alcun parametro. I trigger di notifica ricevono `$Notification`.

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

## Condizioni

Utilizzi il parametro `-Condition` di `New-PSUTrigger` per determinare se il trigger debba essere eseguito. La condizione viene eseguita localmente sul server e deve restituire `$true` o `$false`.

Ad esempio, questa condizione viene eseguita solo quando la variabile di ambiente `Environment` è impostata su `production`:

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

## Cmdlet di PowerShell

Gestisca i trigger con `New-PSUTrigger`, `Get-PSUTrigger`, `Set-PSUTrigger` e `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/it/automazione/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.
