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

# Environnements

Configurez les environnements d'exécution de PowerShell Universal, y compris les versions PowerShell isolées, les environnements virtuels, l'exécution par Devolutions Agent et le mode minimal.

Par défaut, l'authentification et l'autorisation se produisent dans le processus `Universal.Server.exe`. Pour les exécuter à partir d'un processus différent, vous pouvez sélectionner un environnement en définissant le paramètre `-SecurityEnvironment` de `Set-PSUSetting` dans `settings.ps1`. Voir [Sécurité](/powershell-universal/fr/securite/security.md#environment) pour plus d'informations à ce sujet.

Les environnements d'exécution définissent le runtime PowerShell, les modules, les variables et les paramètres d'exécution utilisés par les scripts, les API, les applis, les tâches d'automatisation et les processus de sécurité. Gérez-les sous **Gérer > Environnements > Environnements** ou dans `environments.ps1`.

## Choisir un type d'environnement

| Type                   | Utilisation                                                                                                                                                                 |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Intégré                | S'exécute directement dans le processus du serveur PowerShell Universal.                                                                                                    |
| PowerShell 7           | Utilise l'hôte PowerShell 7 inclus avec PowerShell Universal.                                                                                                               |
| PowerShell 7 (isolé)   | Utilise [multi-pwsh](https://github.com/Devolutions/multi-pwsh) pour exécuter une version de PowerShell 7 sélectionnée, optionnellement dans un environnement virtuel géré. |
| Windows PowerShell 5.1 | Utilise le runtime Windows PowerShell installé sur le serveur.                                                                                                              |
| Personnalisé           | Démarre l'exécutable et les arguments que vous spécifiez.                                                                                                                   |
| Conteneur              | S'exécute dans l'image de conteneur Devolutions Agent configurée.                                                                                                           |

Tous les environnements peuvent définir des modules, des variables PowerShell, des entrées `PSModulePath`, des scripts de démarrage et des paramètres avancés de runspace. Sélectionnez un environnement par son nom lors de la configuration d'un script, d'une planification, d'une API, d'une appli, d'un terminal ou d'un environnement de sécurité.

## Configurer les ressources

Utilisez l'onglet **Ressources** lors de la modification d'un environnement pour configurer ces paramètres :

* **Modules** : noms de modules ou chemins de fichiers de modules que PowerShell Universal importe lorsqu'il crée des runspaces.
* **Variables** : noms des variables PowerShell Universal à rendre disponibles. Utilisez `*` pour inclure toutes les variables correspondantes.
* **PSModulePath** : chemins de recherche de modules additionnels pour l'environnement.
* **Scripts de démarrage** : scripts relatifs au dépôt qui s'exécutent lorsqu'un nouveau runspace est créé.

Les scripts de démarrage s'exécutent une fois pour chaque nouveau runspace. Ils s'exécutent une fois au démarrage d'une tâche, mais peuvent s'exécuter plus souvent pour les API et les applis, au fur et à mesure que leurs runspaces sont créés. Les variables de plateforme ne sont pas disponibles dans les scripts de démarrage.

## Environnements PowerShell 7 isolés

Un environnement isolé utilise multi-pwsh au lieu de l'hôte PowerShell inclus avec PowerShell Universal. Choisissez ce type lorsqu'un script nécessite une version précise de PowerShell 7 ou une isolation de processus plus forte par rapport au SDK PowerShell et aux assemblages chargés du serveur.

Chaque environnement isolé doit avoir une **Version de PowerShell**. PowerShell Universal rejette un environnement isolé qui n'en spécifie pas.

### Installer et sélectionner des versions de PowerShell

1. Allez à **Gérer > Environnements > Versions de PowerShell**.
2. Entrez un sélecteur multi-pwsh tel que `stable`, `preview`, `lts` ou `7.4`, puis sélectionnez **Installer**.
3. Actualisez la liste des versions. Elle affiche chaque version, son chemin, sa portée et si elle est disponible pour les environnements isolés.
4. Créez ou modifiez un environnement, sélectionnez **PowerShell 7 (isolé)**, puis sélectionnez une version isolée installée.

Seules les versions marquées **Isolé** sont sélectionnables pour les environnements isolés. Vous pouvez supprimer les versions installées par multi-pwsh à partir du même onglet lorsqu'elles ne sont plus nécessaires.

Créez un environnement isolé dans la configuration avec une version concrète ou un sélecteur multi-pwsh :

```powershell
New-PSUEnvironment `
    -Name 'Isolated PowerShell 7.4' `
    -Type Isolated `
    -PowerShellVersion '7.4'
```

## Environnements virtuels gérés

Activez **Virtuel** sur un environnement isolé pour l'exécuter dans un environnement virtuel multi-pwsh géré. PowerShell Universal crée l'environnement virtuel avant son utilisation et le sélectionne chaque fois que l'environnement démarre une tâche.

L'identité de l'environnement virtuel géré est dérivée du nom de l'environnement, de la version de PowerShell, des modules, de `PSModulePath` et des paramètres de script de démarrage. La modification de ces paramètres crée une nouvelle identité gérée. PowerShell Universal nettoie les environnements virtuels gérés qui ne sont plus référencés par un environnement.

Utilisez un environnement virtuel lorsque vous voulez que l'état du runtime multi-pwsh reste isolé des autres environnements. Les environnements de conteneur utilisent aussi un environnement virtuel géré lorsque **Virtuel** est activé ou lorsque l'environnement a des modules configurés.

```powershell
New-PSUEnvironment `
    -Name 'Isolated PowerShell 7.4 virtual' `
    -Type Isolated `
    -PowerShellVersion '7.4' `
    -Virtual `
    -Modules @('Az.Accounts')
```

### Prise en charge de Devolutions Agent

Lorsqu'une tâche cible un Devolutions Agent connecté, PowerShell Universal utilise le sélecteur de version de PowerShell de l'environnement avec l'exécutable multi-pwsh de l'agent. Pour un environnement isolé ou de conteneur qui utilise un environnement virtuel géré, le serveur exporte cet environnement virtuel et l'agent l'importe avant le démarrage de la tâche.

Ce transfert est automatique et utilise une URL de téléchargement authentifiée de courte durée. L'agent réutilise un environnement virtuel correspondant déjà importé. Configurez le même environnement normalement, puis choisissez le Devolutions Agent ou le groupe d'ordinateurs dans les options d'exécution ou de planification.

## Environnements PowerShell 7 minimaux

Activez **Minimal** sur un environnement PowerShell 7 pour exécuter les tâches dans un sous-processus PowerShell dédié au moyen de la communication à distance PowerShell locale. Ce mode évite de charger les assemblages d'hébergement normaux de PowerShell Universal dans le processus du script, ce qui est utile pour les scripts et les modules qui ont des conflits de liaison d'assemblage avec le serveur.

Le mode minimal est disponible pour les environnements PowerShell 7, Windows PowerShell 5.1 et Personnalisé. PowerShell Universal conserve la sortie formatée et la sortie de pipeline de la tâche pour les exécutions PowerShell 7 minimales, de sorte que la sortie reste disponible dans le journal des tâches et l'historique des tâches.

Les environnements minimaux ont tout de même des limitations importantes :

* Ils ne prennent pas en charge la rétroaction, le rapport de progression, les secrets ni les applets de commande intégrées de Universal.
* Les valeurs des variables non secrètes configurées sont fournies comme variables d'environnement de processus.
* Utilisez l'environnement PowerShell 7 normal lorsque le script nécessite une intégration complète avec l'hôte PowerShell Universal.

Pour l'activer dans la console d'administration, modifiez un environnement PowerShell 7 et sélectionnez **Minimal**. Dans la configuration :

```powershell
New-PSUEnvironment `
    -Name 'PowerShell 7 Minimal' `
    -Type PowerShell7 `
    -Minimal `
    -Variables @('*')
```

Un environnement minimal personnalisé peut exécuter un autre exécutable de ligne de commande. Utilisez `{scriptPath}` dans ses arguments lorsque l'exécutable doit recevoir le chemin de script résolu.

```powershell
New-PSUEnvironment `
    -Name 'Python' `
    -Path 'python' `
    -Arguments '{scriptPath}' `
    -Variables @('*') `
    -Minimal
```

## Environnements standards

### Intégré

L'environnement Intégré exécute les scripts directement dans le processus du serveur PowerShell Universal. Il évite la sérialisation interprocessus et est simple à configurer, mais il ne peut pas s'exécuter avec des identifiants alternatifs ni utiliser une autre version de PowerShell. Comme les scripts partagent le processus du serveur, des scripts problématiques peuvent affecter la stabilité de la plateforme.

L'environnement Intégré est toujours disponible. Vous pouvez tout de même configurer des modules ou des runspaces persistants pour celui-ci dans `environments.ps1` :

```powershell
New-PSUEnvironment -Name 'Integrated' -Path 'none' -Modules @('ActiveDirectory')
```

### PowerShell 7

L'environnement PowerShell 7 standard utilise l'hôte PowerShell inclus avec PowerShell Universal. C'est la valeur par défaut recommandée pour une large compatibilité avec les modules tiers. Si un script nécessite Windows Forms ou une autre dépendance propre à Windows PowerShell, utilisez plutôt Windows PowerShell 5.1 ou un environnement personnalisé.

### Windows PowerShell 5.1

Windows PowerShell 5.1 utilise le runtime Windows PowerShell installé sur le serveur. Utilisez-le pour les scripts et les modules qui nécessitent Windows PowerShell.

## Utiliser les environnements dans PowerShell Universal

* **API** : définissez `-ApiEnvironment` avec `Set-PSUSetting` dans `settings.ps1`.
* **Automatisation** : définissez `-Environment` pour les scripts et les planifications, ou sélectionnez-le au démarrage d'une tâche.
* **Applis** : définissez `-Environment` avec `New-PSUApp`.
* **Sécurité** : définissez `-SecurityEnvironment` avec `Set-PSUSetting` lorsque l'authentification et l'autorisation doivent s'exécuter à l'extérieur du processus du serveur.

## Compatibilité Windows PowerShell

PowerShell 7 peut automatiquement utiliser la communication à distance Windows PowerShell locale lorsqu'une commande ou un module n'est pas disponible. Cette fonctionnalité de compatibilité crée un processus Windows PowerShell par runspace et peut augmenter considérablement le nombre de processus, l'utilisation de la mémoire, l'utilisation du processeur et la surcharge de sérialisation.

Désactivez la compatibilité Windows PowerShell implicite dans l'onglet **Avancé** de l'environnement lorsqu'elle n'est pas requise. Elle est désactivée pour l'environnement Intégré et ne peut pas y être activée.

Si vous devez utiliser la compatibilité, supprimez la session de compatibilité une fois la commande terminée :

```powershell
Import-Module PSScheduledJob -UseWindowsPowerShell
Get-ScheduledJob | Out-Null
Get-PSSession -Name 'WinPSCompatSession' | Remove-PSSession
```

## Applets de commande PowerShell

Gérez les environnements avec `New-PSUEnvironment`, `Get-PSUEnvironment`, `Set-PSUEnvironment` et `Remove-PSUEnvironment`.


---

# 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/config/environments.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.
