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

# Scripts

Vous pouvez créer des scripts PowerShell dans PowerShell Universal pour les exécuter manuellement, selon un calendrier ou lorsque des événements se produisent dans la plateforme. Ils sont stockés sur disque et persistent dans un référentiel Git local ou distant.

{% hint style="info" %}
Le fichier de configuration `scripts.ps1` stocke les propriétés des scripts.
{% endhint %}

## Ajouter un nouveau script

Pour ajouter un nouveau script, cliquez sur le bouton Nouveau script dans la page Automation / Scripts. Plusieurs paramètres sont disponibles pour le script.

<figure><img src="/files/JkEq1DNqAq2hIQ0Rhl9h" alt=""><figcaption><p>Boîte de dialogue Nouveau script</p></figcaption></figure>

## Options du script

### **Nom**

Il s'agit du nom du script tel qu'il apparaît dans Universal Automation. C'est également le nom utilisé pour conserver le script sur disque. Le nom doit être unique dans le dossier courant.

### Module et commande

Voir [Modules et commandes](#modules-and-commands) ci-dessous.

### **Description**

Cette description du script s'affiche à différents endroits dans l'interface utilisateur de UA et est retournée par les cmdlets Universal.

### **Désactiver l'invocation manuelle**

Cette option empêche l'exécution manuelle d'un script. Elle est appliquée dans l'interface utilisateur, ainsi que dans le serveur web et les cmdlets.

### **Historique maximum des tâches**

L'historique maximum des tâches définit le nombre de tâches conservées lors de l'exécution de ce script. La valeur par défaut est 100. Les tâches sont également nettoyées selon le paramètre de durée de rétention des tâches à l'échelle du serveur, accessible depuis la page Paramètres / Général.

### **Action en cas d'erreur**

L'action en cas d'erreur modifie le comportement du script lorsqu'une erreur survient. Par défaut, les erreurs avec et sans fin d'exécution sont ignorées et le script réussit toujours. Vous pouvez modifier ce paramètre sur « stop » pour que les scripts échouent immédiatement lorsqu'une erreur est rencontrée.

Si vous souhaitez écrire des erreurs directement dans le volet des erreurs sans modifier le traitement du script (par exemple dans un gestionnaire d'exceptions), utilisez `Write-PSUError` pour générer l'enregistrement d'erreur, qui apparaîtra alors dans l'onglet des erreurs de la tâche.

### **Environnement**

Cette option vous permet de définir l'environnement PowerShell requis pour le script. Par défaut, il utilise l'environnement PowerShell par défaut à l'échelle du serveur. Les environnements PowerShell sont automatiquement localisés lors du premier démarrage du serveur Universal, ou lus depuis le fichier `environments.ps1`. Vous pouvez également ajouter un environnement dans la page Paramètres / Environnements.

### **Délai d'expiration**

Le nombre de minutes avant l'expiration du script. La valeur par défaut de 0 signifie que le script s'exécutera indéfiniment. Une fois le délai d'expiration atteint, le script est annulé.

### Ignorer le pipeline

Lorsque cette option est cochée, le stockage des sorties du pipeline est désactivé. Cela réduit considérablement la charge CPU et de stockage des tâches, mais le script continue d'écrire dans les flux d'information, d'avertissement et d'erreur.

### **Tâches simultanées**

Définit le nombre maximum de tâches simultanées avec lesquelles le script peut être exécuté. La valeur par défaut est 100.

```powershell
New-PSUScript -Name Script.ps1 -Path Script.Ps1 -ConcurrentJobs 1
```

### Rôles d'exécution

En utilisant la propriété Rôles d'exécution, vous pouvez définir les rôles attribués lors de l'exécution du script. Par défaut, le script s'exécute selon les rôles de l'appelant. Dans certains scénarios, par exemple lors de l'utilisation de secrets avec des rôles, vous souhaiterez peut-être fournir des rôles supplémentaires que l'appelant ne possède pas. Lors de l'exécution de scripts dans une planification, ceux-ci n'auront aucun rôle ; les fournir via les Rôles d'exécution permettra d'utiliser des variables secrètes avec des rôles dans le script planifié.

## Exécuter un script

Vous pouvez exécuter un script dans l'interface utilisateur depuis la page Automation / Scripts en cliquant sur Exécuter, ou en cliquant sur Afficher puis sur Exécuter. Dans les deux cas, la boîte de dialogue Exécuter s'affiche, vous permettant de sélectionner différents paramètres pour la tâche.

<figure><img src="/files/vGUsl0SFTttMXEZNjK5F" alt=""><figcaption><p>Boîte de dialogue Exécuter le script</p></figcaption></figure>

### Exécuter un script avec des paramètres

{% hint style="info" %}
En savoir plus sur les paramètres [ici](/powershell-universal/fr/automation/scripts/parameters.md).
{% endhint %}

PowerShell Universal détermine automatiquement les paramètres tels que définis dans vos scripts. Il tire parti de l'analyse statique du code pour déterminer le type, les valeurs par défaut et certaines validations, qui sont ensuite présentées dans l'interface utilisateur.

Par exemple, vous pouvez avoir un script avec les paramètres suivants :

```powershell
param(
    $Test,
    [DateTime]$Time, 
    [int]$Number,
    [PSCredential]$Credential,
    [System.ConsoleColor]$Color
)
```

Le résultat est un ensemble d'options de saisie basées sur les types de paramètres.

<figure><img src="/files/TFhrMrD72zmbvxQRKVTw" alt=""><figcaption><p>Boîte de dialogue des paramètres du script</p></figcaption></figure>

### Exécuter un script en tant qu'un autre utilisateur

{% hint style="info" %}
L'[environnement](/powershell-universal/fr/config/environments.md) intégré ne prend pas en charge l'exécution avec des informations d'identification alternatives.
{% endhint %}

Vous pouvez exécuter des scripts en tant qu'un autre utilisateur en configurant des [variables secrètes](/powershell-universal/fr/plateforme/variables.md#creating-a-secret-variable). PowerShell Universal utilise le module Microsoft Secret Management pour s'intégrer avec les fournisseurs de secrets. Consultez la section sur les variables pour plus d'informations sur les secrets.

1. Créez une nouvelle variable secrète PSCredential.

Cliquez sur Platform \ Variables, puis sur Créer un secret. Sélectionnez le type de variable PSCredential. Entrez le nom d'utilisateur et le mot de passe. Assurez-vous que la valeur Désactiver la prise en charge de l'exécution en tant que est décochée.

<figure><img src="/files/2iQCoHJ5tREBtPdXw4q4" alt=""><figcaption><p>Créer une variable secrète</p></figcaption></figure>

2. Exécutez le script et sélectionnez les informations d'identification

Revenez à Automation \ Scripts et cliquez sur le bouton Exécuter le script. Sélectionnez un environnement autre que l'environnement intégré. Par défaut, il s'agira de PowerShell 7 ou Windows PowerShell 5.1.

Une liste déroulante Exécuter en tant que s'affichera alors pour vous permettre de sélectionner les informations d'identification. Vous pouvez ainsi sélectionner les informations d'identification dans la boîte de dialogue d'exécution.

<figure><img src="/files/j0djsRS0Y0ULuirFi5hQ" alt=""><figcaption><p>Exécuter en tant qu'utilisateur</p></figcaption></figure>

### Exécuter un script sur un autre ordinateur

Vous pouvez utiliser la liste déroulante Ordinateur pour sélectionner d'autres machines sur lesquelles exécuter un script. La valeur par défaut est d'exécuter sur n'importe quel ordinateur disponible.

### Exécuter un script sur tous les ordinateurs

Vous pouvez exécuter un script sur tous les ordinateurs en sélectionnant l'option Tous les ordinateurs dans la liste déroulante Ordinateur.

### Exécuter un script depuis une application avec affichage de la sortie

Si vous souhaitez exécuter un script depuis une application et afficher la sortie au fur et à mesure de son exécution, utilisez l'exemple suivant. Il tire parti de `Invoke-PSUScript` et `Get-PSUJobOutput`.

```powershell
New-UDButton -OnClick {
    $Job = Invoke-PSUScript -Name Script.ps1
    while($Job.Status -eq 'Running' -or $Job.Status -eq 'Queued')
    {
        [array]$Output = Get-PSUJobOutput -Job $Job
        $Job = Get-PSUJob -Id $Job.Id
        $Session:Code = $Output | ForEach-Object { 
            "$_`r`n"
        } | Join-String 
        Sync-UDElement -Id 'code'
        Start-Sleep -Seconds 1
    }
} -Text 'Run Script'

New-UDDynamic -Id 'code' -Content {
    if ($Session:Code)
    {
        New-UDSyntaxHighlighter -Code $Session:Code -Language batch
    }
}
```

### Équilibrage de charge

PowerShell Universal utilise un algorithme d'équilibrage de charge basé sur le serveur le moins occupé. Si plusieurs serveurs sont des cibles valides pour une tâche, PowerShell Universal sélectionnera le serveur sur lequel le moins de tâches sont en cours d'exécution.

## Accès à distance

Vous pouvez utiliser la communication à distance PowerShell en tirant parti de `Invoke-Command`. PowerShell Universal ne prend pas en charge l'utilisation de `Enter-PSSession` ou `Import-PSSession`.

## Aide basée sur les commentaires

Vous pouvez utiliser l'aide basée sur les commentaires pour définir la description, un synopsis, une aide basée sur les paramètres et des liens pour vos scripts. Ces informations s'afficheront dans l'interface utilisateur de PowerShell Universal.

```powershell
<#
.SYNOPSIS 

This is a script for pinging other computers. 

.DESCRIPTION

This script can ping other computers. 

.PARAMETER HostName

The host name or address to ping. 

.LINK
https://www.ironmansoftware.com
#>
param($HostName)

Test-NetConnection $HostName
```

L'exemple ci-dessus produit l'interface utilisateur suivante. Le synopsis s'affiche comme description courte, et une description plus longue s'affiche dans la section de description. Les liens apparaissent sous la description.

<figure><img src="/files/YQrw2cWXi9wCjAsyfy7Y" alt=""><figcaption><p>Informations supplémentaires sur le script</p></figcaption></figure>

## Modules et commandes

Les commandes et cmdlets trouvés dans les modules peuvent être utilisés comme cible pour les scripts plutôt que de créer le script directement.

Supposons que nous ayons un module appelé `PSUModule` contenant la fonction suivante.

```powershell
function Show-HelloWorld {
    param($Name)
    "Hello, $Name!"
}
```

Il est possible d'exposer cette fonction en tant que script en utilisant la syntaxe suivante dans `scripts.ps1`.

```powershell
New-PSUScript -Module 'PSUModule' -Command 'Show-HelloWorld'
```

La fonction apparaît comme les autres scripts dans la console d'administration. Les paramètres, le texte d'aide et les autres fonctionnalités de PSU fonctionnent de la même manière qu'avec les scripts.

## Statistiques

En utilisant l'historique des tâches d'un script, PowerShell Universal fournit des statistiques de base sur l'exécution du script. Celles-ci comprennent le taux de réussite, le temps d'exécution moyen, ainsi que des répartitions par environnement, utilisateur et ordinateur d'exécution.

<figure><img src="/files/zxEJMkfvwZ7vDui5273d" alt=""><figcaption><p>Statistiques du script</p></figcaption></figure>

## Prise en charge de Start-Job

Bien qu'il soit possible de démarrer des tâches avec Invoke-PSUScript, il peut être souhaitable de démarrer une tâche avec le cmdlet PowerShell Start-Job. L'utilisation de Start-Job n'enregistre pas la tâche dans PowerShell Universal et les informations d'exécution ne seront pas présentes dans la table des tâches.

Les environnements intégré, PowerShell 7 et Windows PowerShell 5.1 ne sont pas compatibles avec Start-Job car ce sont des hôtes PowerShell personnalisés. Pour utiliser Start-Job, vous devrez configurer un environnement PowerShell personnalisé. Cliquez sur Paramètres \ Environnements. Ensuite, cliquez sur Créer un nouvel environnement. Nommez l'environnement, sélectionnez le type d'environnement Personnalisé et spécifiez pwsh.exe comme chemin d'accès à l'exécutable.

Vous pourrez maintenant utiliser cet environnement pour exécuter le cmdlet Start-Job.

## API

* [New-PSUScript](https://github.com/Devolutions/doc-gitbook/blob/master/translations/fr/powershell-universal/cmdlets/New-PSUScript.txt)
* [Remove-PSUScript](https://github.com/Devolutions/doc-gitbook/blob/master/translations/fr/powershell-universal/cmdlets/Remove-PSUScript.txt)
* [Set-PSUScript](https://github.com/Devolutions/doc-gitbook/blob/master/translations/fr/powershell-universal/cmdlets/Set-PSUScript.txt)
* [Get-PSUScript](https://github.com/Devolutions/doc-gitbook/blob/master/translations/fr/powershell-universal/cmdlets/Get-PSUScript.txt)


---

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

```
GET https://docs.devolutions.net/powershell-universal/fr/automation/scripts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
