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

# Programaciones

Programe scripts de PowerShell Universal con intervalos simples, expresiones CRON, ejecuciones únicas o trabajos continuos, incluidas cuentas de ejecución y condiciones.

Asigne programaciones a los scripts para definir la frecuencia y otros parámetros de un script, como las credenciales con las que se ejecuta.

{% hint style="info" %}
Las programaciones se almacenan en el fichero de configuración `schedules.ps1`.
{% endhint %}

## Programar un trabajo

Para programar un trabajo, vaya a **Run > Schedules** y haga clic en el botón New Schedule. Para programar un script, vaya a la página del script y haga clic en Schedule.

Puede definir programaciones basadas en selecciones simples como Every Minute o Every Hour, o puede definir usted mismo expresiones CRON para obtener programaciones más configurables. También puede ejecutar programaciones One Time, que se ejecutan una sola vez en una fecha posterior.

También puede definir con qué usuario se ejecuta el trabajo programado, así como qué versión de PowerShell utiliza.

### Programaciones simples

Las programaciones simples son en realidad solo ayudas para varias programaciones CRON estándar. Cuando selecciona una, se define una programación CRON para su script.

### CRON

Las programaciones CRON utilizan expresiones CRON para definir las programaciones. PowerShell Universal aprovecha una biblioteca llamada Cronos. Para ver más ejemplos de expresiones válidas, [haga clic aquí](https://github.com/HangfireIO/Cronos).

A continuación se muestran algunos ejemplos de expresiones CRON básicas.

| Expresión            | Descripción                                                                           |
| -------------------- | ------------------------------------------------------------------------------------- |
| `* * * * *`          | Cada minuto                                                                           |
| `0 0 1 * *`          | A medianoche, el día 1 de cada mes                                                    |
| `*/5 * * * *`        | Cada 5 minutos                                                                        |
| `30,45-15/2 1 * * *` | Cada 2 minutos desde la 1:00 hasta la 1:15 y desde la 1:45 hasta la 1:59, y a la 1:30 |
| `0 0 * * MON-FRI`    | A las 00:00, de lunes a viernes                                                       |

### Una sola vez

Las programaciones de una sola vez se ejecutarán una única vez en el futuro. Puede seleccionar la hora y el día en que se ejecutarán.

### Continuas

Las programaciones continuas se ejecutan una y otra vez. Puede definir un retardo entre cada ejecución del trabajo programado.

## Parámetros

Las programaciones permiten establecer parámetros para los scripts. Por ejemplo, si tiene un script que acepta un parámetro, puede optar por pasar un valor al parámetro durante la programación.

```powershell
param($UserName)

$UserName
```

En el modal para definir la programación, puede establecer el valor del parámetro.

Al editar programaciones desde PowerShell, puede definir los parámetros en el cmdlet `New-PSUSchedule`. Este cmdlet acepta una tabla hash que representa los parámetros del script, de modo que pueda pasar los valores para su programación.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Parameters @{ UserName = 'adam' }
```

## Entornos

Al crear una programación, puede especificar el [entorno](/powershell-universal/es/config/environments.md) en el que se ejecutará su trabajo. De forma predeterminada, utilizará el entorno predeterminado. Puede definir un entorno en la interfaz de usuario mediante el menú desplegable Environment. Puede definir un entorno utilizando el parámetro `-Environment` en `New-PSUSchedule`.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Environment '7.1'
```

## Ejecutar como

Puede definir con qué usuario se ejecuta la programación mediante el selector Run As de la interfaz de usuario. El selector Run As contiene una lista de las [variables](/powershell-universal/es/plataforma/variables.md) PSCredential que haya definido. Debe definir una variable PSCredential antes de que el selector Run As sea visible. De forma predeterminada, los trabajos programados se ejecutan con las credenciales del usuario que está ejecutando PowerShell Universal.

Puede definir un usuario Run As en un script mediante el parámetro `-Credential`. El valor debe ser el nombre de la variable que contiene su credencial.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Credential 'MyUser'
```

## Ordenador

Puede seleccionar el ordenador u ordenadores en los que ejecutar la programación. De forma predeterminada, las programaciones se ejecutan en cualquier ordenador disponible. Si selecciona All Computers, la programación se ejecuta en todos los ordenadores conectados al clúster de PSU. Si selecciona un ordenador específico, la programación se ejecuta solo en ese ordenador.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Computer 'PSUNODE1'
```

## Condiciones

Puede definir condiciones que determinen si una programación debe ejecutarse. Esto resulta útil si utiliza los mismos scripts del repositorio para varios entornos. Actualmente, las condiciones no se pueden definir en la consola de administración. Las condiciones se pasan al script y a la programación actuales como parámetros. El bloque de script de la condición se ejecuta en el entorno integrado.

La condición debe devolver true o false. A continuación se muestra un ejemplo de una condición en la que la programación solo se ejecuta si existe una variable de entorno denominada `Slot` que contiene el valor `production`.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Condition {
  $ENV:Slot -eq 'production'
}
```

## Pausar programaciones

Puede pausar una programación estableciendo la propiedad Paused. Cuando una programación está pausada, no se ejecuta. Esto resulta útil para impedir que una programación se ejecute sin eliminarla.

## Tiempo de espera

Puede establecer un tiempo de espera para los trabajos programados. El tiempo de espera es el número de minutos antes de que se cancele el trabajo programado.

## Retardo aleatorio

La propiedad Random Delay hace que una programación se inicie en cualquier momento entre 0 y 60 segundos después de la hora programada. Esto resulta útil cuando se ejecutan muchas programaciones a la vez. Por ejemplo, si tuviera 10 programaciones que se inician a medianoche, es posible que quiera establecer un retardo aleatorio para limitar la contención de recursos en el servicio PowerShell Universal.

## Disponible en la rama

En entornos con varias ramas, puede ser necesario evitar la ejecución de programaciones en función de la rama que se haya cargado en PowerShell Universal. Puede utilizar la opción `-AvailableInBranch` en `New-PSUSchedule` para evitar que una programación se ejecute al trabajar en una rama determinada. Este valor también está disponible en la consola de administración, en la configuración de la programación, cuando git está habilitado.

## API

* [New-PSUSchedule](/powershell-universal/es/comandos-de-powershell/new-psuschedule.md)
* [Get-PSUSchedule](/powershell-universal/es/comandos-de-powershell/get-psuschedule.md)
* [Remove-PSUSchedule](/powershell-universal/es/comandos-de-powershell/remove-psuschedule.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/schedules.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.
