> 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

Asigne programaciones a los scripts para definir la frecuencia y otros parámetros de un script, como las credenciales de ejecución.

{% 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 la página Automation / 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 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 no son más que ayudantes 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 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 vez en el futuro. Puede seleccionar la hora y el día en que se ejecutarán.

### Continua

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

## Parámetros

Las programaciones admiten la definición de parámetros para los scripts. Por ejemplo, si tiene un script que acepta un parámetro, puede elegir pasar un valor al parámetro durante la programación.

```powershell
param($UserName)

$UserName
```

En el cuadro de diálogo 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 hashtable que representa los parámetros del script para 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 la lista 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 ejecutar la programación mediante el selector Run As de la interfaz de usuario. El selector Run As contiene una lista de [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 o los 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 se debe ejecutar una programación. Esto es útil si utiliza los mismos scripts de repositorio para varios entornos. Actualmente, las condiciones no se pueden definir en la consola de administración. Las condiciones se pasan al script y la programación actuales como parámetros. El scriptblock 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 hay 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 algún momento entre 0 y 60 segundos después de la hora programada. Esto es útil cuando se ejecutan muchas programaciones a la vez. Por ejemplo, si tuviera 10 programaciones que se inician a medianoche, puede que desee establecer un retardo aleatorio para limitar la contención de recursos en el servicio de PowerShell Universal.

## Disponible en la rama

En entornos con varias ramas, puede que sea necesario evitar la ejecución de programaciones en función de la rama que esté cargada en PowerShell Universal. Puede utilizar la opción `-AvailableInBranch` en `New-PSUSchedule` para evitar que una programación se ejecute cuando se está ejecutando 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.

<figure><img src="/files/yQdDvQVAenwW0O2lC2yG" alt=""><figcaption><p>Disponible en la rama</p></figcaption></figure>

## 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.
