> 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

Les environnements vous permettent de définir un exécutable, des arguments, des modules et des variables à utiliser lors de l'exécution de scripts, de l'hébergement d'API et de tableaux de bord.

Les environnements sont stockés dans le fichier `environments.ps1`.

## Configuration des environnements

Pour configurer les environnements, vous pouvez utiliser la page Paramètres \ Environnements.

<figure><img src="/files/6OLdLNBeuPUcaMk7tjVG" alt=""><figcaption><p>Page des environnements</p></figcaption></figure>

Les environnements permettent de définir le nom, le chemin, les arguments, les modules et les variables.

<figure><img src="/files/bxNcRSeTxYbRc3wLcGbd" alt=""><figcaption><p>Boîte de dialogue des paramètres d'environnement</p></figcaption></figure>

### Nom

Le nom de l'environnement. Ce nom sera affiché dans l'ensemble de la plateforme lors de l'exécution de scripts, de la configuration de l'environnement hôte de l'API et de l'hébergement de tableaux de bord.

### Chemin et arguments

Les environnements permettent de définir un chemin vers un exécutable et des arguments pour cet exécutable. Ces éléments doivent être soit PowerShell.exe, soit Pwsh.exe.

Vous pouvez également définir des modules et des variables.

### Modules

La liste des modules vous permet de définir zéro ou plusieurs modules à charger dans les runspaces PowerShell pour l'environnement. Ces modules feront partie de l'état de session initial et n'auront pas besoin d'être chargés manuellement. Les éléments ajoutés à cette liste peuvent être des noms de modules ou des chemins complets vers des fichiers de modules.

### Variables

La liste des variables vous permet de définir zéro ou plusieurs variables à charger dans les runspaces PowerShell pour l'environnement. Cette liste peut contenir des noms de variables provenant de la [configuration des variables](/powershell-universal/fr/plateforme/variables.md).

Vous pouvez également utiliser des caractères génériques (`*`) pour inclure plusieurs variables correspondant à un modèle.

### PSModulePath

Vous pouvez utiliser le paramètre `-PSModulePath` de `New-PSUEnvironment` pour configurer des PSModulePaths supplémentaires à inclure dans l'environnement.

### Scripts de démarrage

Les scripts de démarrage sont exécutés une seule fois lorsque l'environnement crée un runspace pour la première fois. Pour les API, cela se produit chaque fois qu'un runspace est créé pour traiter une requête HTTP. Cela peut se produire fréquemment si le serveur est très sollicité. Pour les applications (anciennement appelées tableaux de bord), cela se produit chaque fois qu'un runspace est créé pour traiter un point de terminaison en cours d'exécution pendant qu'un utilisateur consulte une application (tableau de bord). Les serveurs très sollicités et les applications comportant de nombreux composants dynamiques effectuent cette opération plus fréquemment. Pour les tâches, cela se produit une seule fois au démarrage de la tâche.

Les scripts de démarrage sont relatifs au dossier du référentiel. Par exemple, si vous avez un script dans votre dossier de référentiel nommé `startup.ps1`, vous n'avez qu'à indiquer le nom du fichier dans la configuration. Si le script se trouve dans un sous-répertoire, vous devez également l'inclure.

Les variables de la plateforme ne sont pas disponibles dans les scripts de démarrage.

## Utilisation des environnements

Les environnements peuvent être utilisés dans l'ensemble de la plateforme.

### API

Pour sélectionner l'environnement à utiliser, modifiez le fichier `settings.ps1` et incluez le paramètre `-ApiEnvironment` de `Set-PSUSetting`. Il doit s'agir du nom de l'environnement.

### Automatisation

Chaque script, tâche et planification peut utiliser un environnement. Vous pouvez définir des environnements pour les scripts en modifiant le fichier `scripts.ps1` et en définissant le paramètre `-Environment` de `New-PSUScript`. Pour définir l'environnement d'une planification, définissez le paramètre `-Environment` de `New-PSUSchedule` dans `schedules.ps1`. Lors de l'appel d'un script, vous pouvez également choisir un environnement à utiliser.

### Applications (tableaux de bord)

Pour utiliser un environnement particulier pour une application (tableau de bord), définissez le paramètre `-Environment` de `New-PSUApp` dans `dashboards.ps1`.

### Sécurité

Par défaut, l'authentification et l'autorisation s'effectuent dans le processus `Universal.Server.exe`. Pour les exécuter depuis un processus différent, vous pouvez sélectionner un environnement en définissant le paramètre `-SecurityEnvironment` de `Set-PSUSetting` dans `settings.ps1`. Consultez [Sécurité](https://docs.powershelluniversal.com/config/security#environment) pour plus d'informations à ce sujet.

## Environnement intégré

{% hint style="warning" %}
L'environnement intégré ne prend pas en charge l'exécution avec des identifiants alternatifs.
{% endhint %}

L'environnement intégré utilise directement le processus du serveur PowerShell Universal plutôt que de démarrer des processus PowerShell externes pour traiter les requêtes.

L'environnement intégré est plus facile à configurer et à utiliser que plusieurs environnements disparates. Vous constaterez également une amélioration des performances, car il n'est pas nécessaire de sérialiser et de communiquer via une communication interprocessus.

L'inconvénient est que vous ne pouvez pas élever les privilèges vers des identifiants alternatifs ni utiliser des versions alternatives de PowerShell. Vous utiliserez la version actuelle du SDK PowerShell du serveur PowerShell Universal. De plus, étant donné que tous les scripts PowerShell s'exécutent dans le service, vos scripts PowerShell peuvent affecter la stabilité de la plateforme.

Veuillez consulter les [Meilleures pratiques](/powershell-universal/fr/config/best-practices.md#favor-non-integrated-environments) pour plus d'informations.

### Configuration

L'environnement intégré est toujours disponible et vous n'avez pas besoin de le configurer directement. Si vous souhaitez importer des modules ou configurer des runspaces persistants, vous pouvez définir des paramètres pour l'environnement intégré dans `environments.ps1`.

{% code title=".universal\environments.ps1" %}

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

{% endcode %}

### API

Pour définir l'environnement intégré, vous pouvez utiliser `Set-PSUSetting` dans `settings.ps1`.

{% code title=".universal\settings.ps1" %}

```powershell
Set-PSUSetting -ApiEnvironment 'Integrated'
```

{% endcode %}

### Automatisation

Vous pouvez affecter l'environnement intégré aux scripts et aux planifications. Vous pouvez également définir l'environnement intégré comme environnement par défaut pour la plateforme.

```powershell
Set-PSetting -DefaultEnvironment 'Integrated'
```

Vous pouvez également choisir l'environnement intégré depuis la boîte de dialogue d'exécution.

### Applications

Vous pouvez exécuter des applications dans l'environnement intégré. Sélectionnez l'environnement intégré dans la liste déroulante des environnements.

## PowerShell 7

L'environnement PowerShell 7 utilise un processus d'hébergement intégré pour le SDK PowerShell inclus avec PowerShell Universal. Il s'agit de l'environnement recommandé, car il offre la meilleure compatibilité avec les modules tiers.

L'environnement PowerShell 7 ne prend pas en charge l'utilisation des assemblages System.Windows.Forms. Si ces assemblages sont requis pour des scripts ou des modules, utilisez un environnement personnalisé ciblant pwsh.exe.

## Windows PowerShell 5.1

L'environnement Windows PowerShell 5.1 utilise un processus d'hébergement intégré pour le runtime PowerShell présent sur la machine actuelle. Il s'agit du seul environnement disponible pour l'exécution de scripts Windows PowerShell.

## Environnements minimaux

Les environnements minimaux permettent d'exécuter des scripts dans des applications en ligne de commande qui ne s'intègrent pas à l'environnement d'hébergement PowerShell Universal. PowerShell Universal capture `STDOUT` et `STDERR` et les affiche dans le journal des tâches. Voici quelques cas d'usage des environnements minimaux :

* Scripts Python
* Scripts PowerShell avec des modules problématiques

Les environnements minimaux ne prennent pas en charge les éléments suivants :

* Feedback
* Progress
* Secrets
* Universal Integrated Cmdlets

Les environnements minimaux recevront les valeurs des variables sous forme de variables d'environnement. Lors de la définition d'un environnement minimal, vous pouvez utiliser la chaîne de remplacement `{scriptPath}` pour configurer les arguments de l'environnement afin de définir le chemin approprié lors de l'exécution du script.

Par exemple, ce qui suit crée un environnement PowerShell 7 qui ne charge pas les bibliothèques d'hébergement PowerShell Universal.

```powershell
New-PSUEnvironment -Name 'Minimal' -Path 'pwsh' -Arguments "-File {scriptPath}" -Variables @('*') -Minimal
```

Pour créer un environnement Python, vous pouvez procéder comme suit.

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

## Compatibilité Windows PowerShell

La compatibilité Windows PowerShell est une fonctionnalité de PowerShell 7. Lorsque des commandes et des modules ne sont pas disponibles dans PowerShell 7, la plateforme démarre automatiquement un processus Windows PowerShell en arrière-plan et effectue une communication à distance locale depuis le processus PowerShell 7. Cela assure une rétrocompatibilité avec les modules Windows PowerShell.

Un avertissement peut apparaître dans la page des environnements lorsque cette fonctionnalité de PowerShell est activée, en raison des implications sur la plateforme PowerShell Universal.

### Problèmes liés à la compatibilité WinPS dans PowerShell Universal

Pour chaque runspace ouvert par PowerShell Universal dans lequel la compatibilité Windows PowerShell est utilisée, un nouveau processus Windows PowerShell sera démarré. Ces processus ne s'arrêteront qu'une fois le runspace recyclé.

Cela réduit considérablement les performances en raison du nombre excessif de processus en cours d'exécution et de l'utilisation de la mémoire et du CPU attribuée à la sérialisation et à la gestion des runspaces distants.

La cause la plus fréquente est l'utilisation du module Active Directory 1.0.0.0 depuis PowerShell 7.

### Désactivation de la compatibilité implicite Windows PowerShell

Vous pouvez désactiver la compatibilité Windows PowerShell via les paramètres dans les propriétés de l'environnement.

La compatibilité Windows PowerShell est désactivée par défaut pour l'environnement intégré et ne peut pas être activée.

### Utilisation propre de la compatibilité Windows PowerShell

Si nécessaire, vous pouvez supprimer le runspace de compatibilité Windows après l'exécution d'une commande utilisant cette fonctionnalité. Cela supprimera le processus Windows PowerShell. Chaque fois que ce point de terminaison est exécuté, la session devra être rétablie.

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

Vous pouvez en apprendre davantage sur la [compatibilité Windows PowerShell ici](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_windows_powershell_compatibility?view=powershell-7.2).

## API

* [New-PSUEnvironment](https://github.com/Devolutions/doc-gitbook/blob/master/translations/fr/powershell-universal/cmdlets/New-PSUEnvironment.txt)
* [Get-PSUEnvironment](https://github.com/Devolutions/doc-gitbook/blob/master/translations/fr/powershell-universal/cmdlets/Get-PSUEnvironment.txt)
* [Remove-PSUEnvironment](https://github.com/Devolutions/doc-gitbook/blob/master/translations/fr/powershell-universal/cmdlets/Remove-PSUEnvironment.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/config/environments.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.
