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

# Planifications

Planifiez des scripts PowerShell Universal avec des intervalles simples, des expressions CRON, des exécutions uniques ou des tâches continues, y compris les comptes d'exécution et les conditions.

Attribuez des planifications aux scripts pour définir la fréquence et d'autres paramètres d'un script, comme les identifiants d'exécution.

{% hint style="info" %}
Les planifications sont stockées dans le fichier de configuration `schedules.ps1`.
{% endhint %}

## Planifier une tâche

Pour planifier une tâche, allez à **Run > Schedules** et cliquez sur le bouton New Schedule. Pour planifier un script, allez à la page du script et cliquez sur Schedule.

Vous pouvez définir des planifications en fonction de sélections simples comme Chaque minute ou Chaque heure, ou vous pouvez définir vous-même des expressions CRON pour des planifications plus configurables. Vous pouvez aussi exécuter des planifications ponctuelles qui s'exécutent une seule fois à une date ultérieure.

Vous pouvez aussi définir sous quel utilisateur la tâche planifiée s'exécute, ainsi que la version de PowerShell qu'elle utilise.

### Planifications simples

Les planifications simples ne sont en fait que des assistants pour diverses planifications CRON standards. Lorsque vous en sélectionnez une, elle définit une planification CRON pour votre script.

### CRON

Les planifications CRON utilisent des expressions CRON pour définir les planifications. PowerShell Universal tire parti d'une bibliothèque appelée Cronos. Pour plus d'exemples d'expressions valides, [cliquez ici](https://github.com/HangfireIO/Cronos).

Voici quelques exemples d'expressions CRON de base.

| Expression           | Description                                                                      |
| -------------------- | -------------------------------------------------------------------------------- |
| `* * * * *`          | Chaque minute                                                                    |
| `0 0 1 * *`          | À minuit, le 1er jour de chaque mois                                             |
| `*/5 * * * *`        | Toutes les 5 minutes                                                             |
| `30,45-15/2 1 * * *` | Toutes les 2 minutes de 1 h 00 à 1 h 15 et de 1 h 45 à 1 h 59, ainsi qu'à 1 h 30 |
| `0 0 * * MON-FRI`    | À 00 h 00, du lundi au vendredi                                                  |

### Ponctuelle

Les planifications ponctuelles s'exécutent une fois dans le futur. Vous pouvez sélectionner l'heure et le jour de leur exécution.

### Continue

Les planifications continues s'exécutent encore et encore. Vous pouvez définir un délai entre chaque exécution de la tâche planifiée.

## Paramètres

Les planifications prennent en charge la définition de paramètres pour les scripts. Par exemple, si vous avez un script qui accepte un paramètre, vous pouvez choisir de transmettre une valeur au paramètre pendant la planification.

```powershell
param($UserName)

$UserName
```

Dans la fenêtre modale de définition de la planification, vous pouvez définir la valeur du paramètre.

Lorsque vous modifiez des planifications à partir de PowerShell, vous pouvez définir les paramètres sur l'applet de commande `New-PSUSchedule`. Cette applet de commande accepte une table de hachage représentant les paramètres du script afin que vous puissiez transmettre les valeurs pour votre planification.

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

## Environnements

Lors de la création d'une planification, vous pouvez spécifier l'[environnement](/powershell-universal/fr/config/environments.md) dans lequel votre tâche s'exécutera. Par défaut, elle utilisera l'environnement par défaut. Vous pouvez définir un environnement dans l'interface utilisateur à l'aide de la liste déroulante Environment. Vous pouvez définir un environnement à l'aide du paramètre `-Environment` dans `New-PSUSchedule`.

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

## Exécuter en tant que

Vous pouvez définir sous quel utilisateur exécuter la planification à l'aide du sélecteur Run As dans l'interface utilisateur. Le sélecteur Run As contient une liste de [variables](/powershell-universal/fr/plateforme/variables.md) PSCredential que vous avez définies. Vous devez définir une variable PSCredential avant que le sélecteur Run As soit visible. Par défaut, les tâches planifiées s'exécutent sous les identifiants de l'utilisateur qui exécute PowerShell Universal.

Vous pouvez définir un utilisateur Run As dans un script à l'aide du paramètre `-Credential`. La valeur doit être le nom de la variable qui contient votre identifiant.

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

## Ordinateur

Vous pouvez sélectionner l'ordinateur ou les ordinateurs sur lesquels exécuter la planification. Par défaut, les planifications s'exécutent sur n'importe quel ordinateur disponible. Si vous sélectionnez All Computers, la planification s'exécute sur tous les ordinateurs connectés à la grappe PSU. Si vous sélectionnez un ordinateur en particulier, la planification s'exécute uniquement sur cet ordinateur.

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

## Conditions

Vous pouvez définir des conditions qui déterminent si une planification doit être exécutée. C'est utile si vous utilisez les mêmes scripts de dépôt pour plusieurs environnements. Actuellement, les conditions ne peuvent pas être définies dans la console d'administration. Les conditions sont transmises au script et à la planification actuels en tant que paramètres. Le bloc de script de la condition s'exécute dans l'environnement intégré.

La condition doit retourner true ou false. Voici un exemple de condition où la planification ne s'exécute que s'il existe une variable d'environnement nommée `Slot` qui contient la valeur `production`.

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

## Mettre des planifications en pause

Vous pouvez mettre une planification en pause en définissant la propriété Paused. Lorsqu'une planification est en pause, elle ne s'exécute pas. C'est utile pour empêcher une planification de s'exécuter sans la supprimer.

## Délai d'expiration

Vous pouvez définir un délai d'expiration pour les tâches planifiées. Le délai d'expiration correspond au nombre de minutes avant l'annulation de la tâche planifiée.

## Délai aléatoire

La propriété Random Delay fait démarrer une planification entre 0 et 60 secondes après l'heure planifiée. C'est utile lorsque de nombreuses planifications s'exécutent en même temps. Par exemple, si vous avez 10 planifications qui démarrent à minuit, vous pourriez vouloir définir un délai aléatoire pour limiter la contention des ressources sur le service PowerShell Universal.

## Disponible dans la branche

Dans les environnements à plusieurs branches, il peut être nécessaire d'éviter d'exécuter des planifications en fonction de la branche chargée dans PowerShell Universal. Vous pouvez utiliser l'option `-AvailableInBranch` de `New-PSUSchedule` pour éviter qu'une planification s'exécute lorsqu'une certaine branche est utilisée. Cette valeur est également disponible dans la console d'administration, sous les paramètres de la planification, lorsque git est activé.

## API

* [New-PSUSchedule](/powershell-universal/fr/commandes-powershell/new-psuschedule.md)
* [Get-PSUSchedule](/powershell-universal/fr/commandes-powershell/get-psuschedule.md)
* [Remove-PSUSchedule](/powershell-universal/fr/commandes-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/fr/automatisation/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.
