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

# Desencadenadores

{% hint style="info" %}
Los desencadenadores requieren una [licencia](https://store.devolutions.net/package#psu).
{% endhint %}

Los desencadenadores permiten iniciar trabajos de automatización cuando se producen determinados eventos en PowerShell Universal. Por ejemplo, esto le permite actuar cuando los trabajos finalizan, el servidor se inicia o los paneles se detienen. Los desencadenadores son útiles para asignar una gestión global de errores o enviar notificaciones cuando ocurren determinadas cosas.

{% hint style="info" %}
Los trabajos desencadenados no provocarán el inicio de desencadenadores adicionales. Los desencadenadores se almacenan en `triggers.ps1`.
{% endhint %}

## Eventos de desencadenador

A los siguientes tipos de eventos se les puede asignar un desencadenador.

* Trabajo iniciado
* Trabajo cancelado
* Trabajo completado
* Trabajo completado con error
* Trabajo solicitando comentarios
* Trabajo fallido
* Tiempo de espera del trabajo agotado
* Aplicación (panel) iniciada
* Aplicación (panel) detenida
* Sesión de la aplicación (panel) caducada
* Event Hub conectado
* Event Hub desconectado
* Comprobación de estado fallida
* Servidor iniciado
* Servidor deteniéndose
* Inicio de sesión de usuario nuevo
* Inicio de sesión de usuario
* Uso de un token de aplicación revocado
* Autenticación de API fallida
* Error de API
* Sincronización de git
* Licencia caducada
* Licencia próxima a caducar
* Ordenador sin conexión

### Inicio de sesión de usuario nuevo

El evento de inicio de sesión de usuario se produce cuando un usuario accede a PowerShell Universal. El script recibirá un parámetro `$User`con información del usuario.

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

### Inicio de sesión de usuario

El evento de inicio de sesión de usuario se produce cuando un usuario accede a PowerShell Universal. El script recibirá un parámetro `$data` con información del usuario. La estructura de datos se muestra a continuación.

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

### Uso de un token de aplicación revocado

El evento de token de aplicación se produce cuando se utiliza un token de aplicación revocado. El script recibirá un parámetro `$data` que contiene el contenido del token de aplicación como una cadena.

### Sincronización de git

Este desencadenador se produce cuando se ejecuta una sincronización de git. Este desencadenador se activará tanto para las sincronizaciones de git correctas como para las incorrectas.

Recibirá el siguiente objeto en el parámetro `$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; }
}
```

### Ordenador sin conexión

El desencadenador de ordenador sin conexión proporcionará el objeto del ordenador al parámetro `$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
}
```

## Desencadenadores globales

Los desencadenadores globales iniciarán el script asignado cada vez que se invoque el tipo de evento.

Por ejemplo, `Script.ps1` se ejecutará cada vez que se ejecute cualquier trabajo.

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

## Desencadenadores de recursos

Los desencadenadores de recursos iniciarán el script asignado cuando el evento se produzca en el recurso seleccionado.

Por ejemplo, `Script.ps1` se ejecutará cada vez que se detenga `Dashboard`.

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

## Metadatos del evento

Cada vez que se inicia un trabajo desde un desencadenador, se le proporcionarán metadatos sobre el objeto que provocó la activación del evento.

A los desencadenadores relacionados con trabajos se les proporcionará un parámetro `$Job`.

```powershell
param($Job)

$Job
```

A los desencadenadores relacionados con paneles se les proporcionará un parámetro `$Dashboard`.

```powershell
param($Dashboard)

$Dashboard
```

Los desencadenadores relacionados con el estado del servidor no recibirán ningún parámetro.

## Condiciones

Mediante el parámetro `-Condition` de `New-PSUTrigger`, puede determinar si un desencadenador debe ejecutarse o no en función de las condiciones locales del servidor. Devuelva `$true` o `$false` desde la condición.

Por ejemplo, puede desactivar un desencadenador si la variable de entorno `Environment` no está establecida en `production`.

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

## API

* [New-PSUTrigger](/powershell-universal/es/comandos-de-powershell/new-psutrigger.md)
* [Remove-PSUTrigger](/powershell-universal/es/comandos-de-powershell/remove-psutrigger.md)
* [Set-PSUTrigger](/powershell-universal/es/comandos-de-powershell/set-psutrigger.md)
* [Get-PSUTrigger](/powershell-universal/es/comandos-de-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/es/automatizacion/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.
