> 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

{% hint style="info" %}
I trigger richiedono una [licenza](https://store.devolutions.net/package#psu).
{% endhint %}

I trigger consentono di avviare job di automazione quando si verificano determinati eventi all'interno di PowerShell Universal. Ad esempio, ciò le permette di intervenire quando i job vengono completati, il server viene avviato o le dashboard si arrestano. I trigger sono utili per assegnare una gestione globale degli errori o per inviare notifiche quando accadono determinati eventi.

{% hint style="info" %}
I job attivati da trigger non causeranno l'avvio di ulteriori trigger. I trigger sono memorizzati in `triggers.ps1`.
{% endhint %}

## Eventi trigger

Ai seguenti tipi di eventi può essere assegnato un trigger.

* Job avviato
* Job annullato
* Job completato
* Job completato con errore
* Job che richiede feedback
* Job non riuscito
* Job scaduto
* App (Dashboard) avviata
* App (Dashboard) arrestata
* Sessione dell'app (Dashboard) scaduta
* Event Hub connesso
* Event Hub disconnesso
* Controllo di integrità non riuscito
* Server avviato
* Arresto del server
* Nuovo accesso utente
* Accesso utente
* Utilizzo di un token app revocato
* Autenticazione API non riuscita
* Errore API
* Sincronizzazione git
* Licenza scaduta
* Licenza in scadenza
* Computer offline

### Nuovo accesso utente

L'evento di accesso utente si verifica quando un utente accede a PowerShell Universal. Lo script riceverà un parametro `$User` con le informazioni sull'utente.

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

### Accesso utente

L'evento di accesso utente si verifica quando un utente accede a PowerShell Universal. Lo script riceverà un parametro `$data` con le informazioni sull'utente. La struttura dei dati è mostrata di seguito.

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

### Utilizzo di un token app revocato

L'evento del token app si verifica quando viene utilizzato un token app revocato. Lo script riceverà un parametro `$data` che contiene il contenuto del token app come stringa.

### Sincronizzazione git

Questo trigger si verifica quando viene eseguita una sincronizzazione git. Questo trigger si attiverà sia per le sincronizzazioni git riuscite sia per quelle non riuscite.

Riceverà il seguente oggetto nel parametro `$data`.

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

Il trigger computer offline fornirà l'oggetto computer al 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
}

enum ComputerStatus
{
    Offline,
    Online,
    Busy,
    Loading,
    StartupError
}

enum ComputerType
{
    Server,
    Agent
}
```

## Trigger globali

I trigger globali avviano lo script assegnato ogni volta che viene richiamato il tipo di evento.

Ad esempio, `Script.ps1` verrà eseguito ogni volta che viene eseguito un job qualsiasi.

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

## Trigger di risorsa

I trigger di risorsa avviano lo script assegnato quando l'evento si verifica sulla risorsa selezionata.

Ad esempio, `Script.ps1` verrà eseguito ogni volta che la `Dashboard` viene arrestata.

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

## Metadati dell'evento

Ogni volta che un job viene avviato da un trigger, gli vengono forniti i metadati relativi all'oggetto che ha causato l'attivazione dell'evento.

Ai trigger relativi ai job verrà fornito un parametro `$Job`.

```powershell
param($Job)

$Job
```

Ai trigger relativi alle dashboard verrà fornito un parametro `$Dashboard`.

```powershell
param($Dashboard)

$Dashboard
```

I trigger relativi allo stato del server non riceveranno alcun parametro.

## Condizioni

Utilizzando il parametro `-Condition` di `New-PSUTrigger`, può determinare se un trigger debba essere eseguito o meno in base alle condizioni locali del server. Restituisca `$true` o `$false` dalla condizione.

Ad esempio, può disabilitare un trigger se la variabile di ambiente `Environment` non è impostata su `production`.

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

## API

* [New-PSUTrigger](/powershell-universal/it/comandi-powershell/new-psutrigger.md)
* [Remove-PSUTrigger](/powershell-universal/it/comandi-powershell/remove-psutrigger.md)
* [Set-PSUTrigger](/powershell-universal/it/comandi-powershell/set-psutrigger.md)
* [Get-PSUTrigger](/powershell-universal/it/comandi-powershell/get-psutrigger.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/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.
