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

# Paramètres de l'appli

Configurez les paramètres de l'application PowerShell Universal dans appsettings.json, couvrant les terminaux Kestrel, l'authentification, JWT et la persistance des données.

Les paramètres de l'application se trouvent dans le fichier `appsettings.json` du répertoire d'installation. Ce fichier définit divers paramètres que vous pouvez appliquer à PowerShell Universal. Bien que vous puissiez modifier ce fichier directement, il est recommandé d'utiliser l'une des méthodes suivantes pour conserver les paramètres, car le fichier `appsettings.json` du répertoire d'installation sera écrasé lors des mises à niveau.

{% hint style="info" %}
Lorsqu'il est installé à partir du MSI, le répertoire d'installation de PowerShell Universal est `${env:ProgramFiles(x86)}\Universal`.
{% endhint %}

## ProgramData AppSettings.json

Vous pouvez créer un fichier appsettings.json dans le dossier `$Env:ProgramData\PowerShellUniversal`. Vous pouvez utiliser un sous-ensemble des paramètres du fichier `appsettings.json`. Par exemple, si vous vouliez remplacer les paramètres JWT, vous pourriez avoir un fichier `appsettings.json` comme celui-ci.

```javascript
{
  "Jwt": {  
    "SigningKey": "PleaseUseYourOwnSigningKeyHere",  
    "Issuer": "IronmanSoftware",
    "Audience": "PowerShellUniversal"
  }
}
```

## Variables d'environnement

Vous pouvez également définir des variables d'environnement pour vos paramètres. Les variables d'environnement doivent comporter un trait de soulignement entre chaque sous-ensemble du fichier `appsettings.json`. Par exemple, si vous voulez modifier la clé de signature JWT par variable d'environnement, vous définiriez la variable `$Env:Jwt__SigningKey`. Si vous vouliez définir l'URL de l'API externe, vous définiriez `$Env:Api__Url`.

### Exemples

Utilisation d'une variable d'environnement pour le secret OpenID Connect.

```
$Env:Authentication__OIDC__ClientSecret = "mySecret"
```

Utilisation d'une variable d'environnement pour la clé de signature JWT.

```
$Env:Jwt__SigningKey = "mySigningKey"
```

## Ligne de commande

Vous pouvez spécifier l'emplacement du fichier `appsettings.json` en utilisant l'argument de ligne de commande `--appsettings` pour `Universal.Server.exe` .

```powershell
.\Universal.Server.exe --appsettings C:\appsettings.json
```

## Description des paramètres

### Kestrel / Terminaux

**Valeur par défaut**

```javascript
"Kestrel": {
  "Endpoints": {
    "HTTP": {
      "Url": "http://*:5000"
    }
  },
  "RedirectToHttps": "false"
},
```

La section des terminaux Kestrel vous permet de configurer le serveur web. Ces paramètres ne sont pas utilisés lors de l'hébergement dans IIS. Dans cette section, vous pouvez configurer des options comme HTTPS et le port sur lequel PowerShell Universal écoutera.

Kestrel est l'implémentation du serveur web pour ASP.NET Core qu'utilise PowerShell Universal. Pour plus d'informations sur les options de configuration de Kestrel, consultez cette [page de documentation Microsoft](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#listenoptionsusehttps).

| Clé               | Description                                                                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RedirectToHttps   | Lorsque la valeur est true, le serveur web redirige les requêtes HTTP vers HTTPS                                                                                     |
| BasePath          | Requis lors de la configuration de PowerShell Universal comme site imbriqué dans IIS. Ceci doit contenir la route IIS imbriquée. Par exemple `/psu`                  |
| Hsts \ MaxAgeDays | Définit l'âge maximal en jours pour [HTTP Strict Transport Security](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security). |
| CookiePolicy      | Lorsque la valeur est SameSiteNone, la valeur SameSite=None sera définie sur les témoins dans PSU. C'est utile lors de l'hébergement de PSU dans des iframes.        |
| Headers           | Un objet où les clés sont les en-têtes à définir sur chaque requête, la valeur étant la valeur de l'en-tête.                                                         |

### Azure Application Insights

**Valeur par défaut**

```javascript
"ApplicationInsights": {
  "ConnectionString": ""
},
```

| Clé              | Description                                               |
| ---------------- | --------------------------------------------------------- |
| ConnectionString | Définit la chaîne de connexion pour Application Insights. |

### Journalisation

**Valeur par défaut**

```javascript
{
    "SystemLogPath": "%PROGRAMDATA%/PowerShellUniversal/Logs/System/log.txt",
    "SystemLogLevel": "Information"
}
```

Définit le chemin et le niveau du journal système. Ceci sera remplacé par le niveau de journalisation dans settings.ps1 après son chargement. Ce paramètre est utile pour déboguer des problèmes durant le démarrage du système.

| Clé            | Description                                                                                                    |
| -------------- | -------------------------------------------------------------------------------------------------------------- |
| SystemLogPath  | Chemin vers le fichier journal.                                                                                |
| SystemLogLevel | Le niveau du journal système. Vous pouvez définir des valeurs telles que Debug, Information, Warning et Error. |

### AllowedHosts

**Valeur par défaut**

```javascript
    "AllowedHosts": "*",
```

Les hôtes autorisés à se connecter au serveur web. Par défaut, tout hôte.

### **CorsHosts**

**Valeur par défaut**

```javascript
    "CorsHosts": "",
```

Configure les hôtes autorisés à effectuer des requêtes de partage de ressources entre origines (CORS) vers le serveur. Pour autoriser plusieurs hôtes, séparez chaque hôte par un point-virgule.

```javascript
"CorsHosts" : "https://www.google.com;https://login.microsoftonline.com"
```

### **Data**

**Valeur par défaut**

```javascript
"Data": {
  "RepositoryPath": "%ProgramData%\\UniversalAutomation\\Repository",
  "ConnectionString": "%ProgramData%\\UniversalAutomation\\database.db",
  "GitRemote": "",
  "GitUserName": "",
  "GitPassword": "", 
  "GitBranch": "",
  "ConfigurationScript": "",
  "ExternalGitClient": false,
  "Mode": "automatic",
  "SlowQueryLimit": 500,
  "Persistence": {}
},
```

| Clé                        | Description                                                                                                                                                                       |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RepositoryPath             | Chemin vers l'emplacement de stockage des fichiers de configuration utilisés par Universal.                                                                                       |
| ConnectionString           | Chemin vers la base de données utilisée par Universal.                                                                                                                            |
| GitRemote                  | Dépôt distant Git utilisé pour la synchronisation avec Universal.                                                                                                                 |
| GitBranch                  | Branche Git à extraire lors de la synchronisation avec Universal.                                                                                                                 |
| GitUserName                | Nom d'utilisateur Git utilisé pour la synchronisation avec GitRemote. Lors de l'utilisation d'un PAT, cette valeur peut être n'importe laquelle.                                  |
| GitPassword                | Le mot de passe utilisateur Git ou le jeton d'accès personnel utilisé pour la synchronisation avec GitRemote.                                                                     |
| GitSyncTimeout             | Le nombre de secondes avant l'expiration d'une commande de client git externe. Par défaut, 60 secondes.                                                                           |
| ConfigurationScript        | Emplacement d'un script de configuration personnalisé à charger. Vous pouvez retourner des objets comme des scripts, des tableaux de bord et des terminaux à partir de ce script. |
| ExternalGitClient          | Lorsque la valeur est true, le client Git du système d'exploitation sera utilisé au lieu du client de bibliothèque intégré                                                        |
| Mode                       | Définit le mode git. Il peut être manuel ou automatique. Par défaut, manuel.                                                                                                      |
| SlowQueryLimit             | Le nombre de millisecondes qu'une requête SQL doit s'exécuter avant qu'un message de journal ne soit écrit. Par défaut, 200 ms. Disponible uniquement pour MS SQL.                |
| Persistence                | Configure la [persistance des ressources en base de données](/powershell-universal/fr/config/repository.md).                                                                      |
| InvisibilityTimeoutMinutes | Le nombre de minutes avant l'expiration d'une tâche dans Hangfire. Par défaut, 5. S'applique uniquement à PostgreSQL.                                                             |

### **API**

**Valeur par défaut**

```javascript
"Api": {
  "Url": "",
  "HideManagementDoc": false
},
```

| Clé               | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Url               | Définit l'URL externe utilisée en interne par Universal. Ceci est nécessaire lors de l'exécution d'Universal derrière un proxy inverse comme IIS. Lors de l'utilisation d'applets de commande comme `Get-UAScript` depuis une tâche en cours d'exécution, le serveur Universal doit déterminer où se trouve le serveur web. Lors de l'exécution derrière un proxy, il ne peut pas le déterminer lui-même. Vous voudrez configurer ceci pour pointer vers le nom et le port du site web IIS dans cette configuration. |
| HideManagementDoc | Si true, masque la documentation OpenAPI de l'API de gestion PowerShell Universal.                                                                                                                                                                                                                                                                                                                                                                                                                                   |

{% hint style="warning" %}
\`Api.Url\` est utilisé en interne par PowerShell Universal lorsque des applets de commande doivent rappeler le serveur PSU depuis des tâches, des terminaux ou d'autres contextes d'exécution internes. Dans les environnements à proxy inverse ou à équilibrage de charge, assurez-vous que cette valeur pointe vers une URL stable et directement accessible pour l'hôte PSU. L'utilisation d'un alias DNS ou d'un autre terminal indirect peut causer des échecs intermittents des applets de commande si cet alias se résout via un proxy ou un chemin backend instable. Au besoin, spécifiez explicitement \`-ComputerName\` pour l'appel de l'applet de commande.
{% endhint %}

### **Authentification**

**Valeur par défaut**

```javascript
"Authentication" : {
    "Windows": {
      "Enabled": "false"
    },
    "WSFed": {
      "Enabled": "false",
      "MetadataAddress": "",
      "Wtrealm": "",
      "CallbackPath": "/auth/signin-wsfed",
      "Wreply": "",
      "UseTokenLifetime": true,
      "CorrelationCookieSameSite": ""
    },
    "OIDC": {
      "Enabled": "false",
      "CallbackPath": "/auth/signin-oidc",
      "ClientID": "",
      "ClientSecret": "",
      "Resource": "",
      "Authority": "",
      "ResponseType": "",
      "SaveTokens": "false",
      "CorrelationCookieSameSite": "",
      "UseTokenLifetime": true
    },
    "OIDC": {
      "Enabled": "false",
      "CallbackPath": "/auth/signin-oidc",
      "ClientID": "",
      "ClientSecret": "",
      "Resource": "",
      "Authority": "",
      "ResponseType": "",
      "SaveTokens": "false",
      "CorrelationCookieSameSite": "",
      "UseTokenLifetime": true,
      "Scope": "openid profile groups",
      "GetUserInfo": false
    },
    "ClientCertificate": {
      "Enabled": "false"
    },
    "SessionTimeout": "25"
  },
```

**Windows**

| **Clé** | Description                                                                                                                            |
| ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Enabled | Active ou désactive l'[authentification Windows](/powershell-universal/fr/api/security.md#authenticating-with-windows-authentication). |

#### OIDC

Paramètres d'authentification OpenID Connect.

| Clé                       | Description                                                                                                                                                                                   |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Enabled                   | Indique si OIDC est activé.                                                                                                                                                                   |
| CallbackPath              | Le chemin que le fournisseur OIDC rappellera.                                                                                                                                                 |
| ClientID                  | L'ID client OIDC configuré.                                                                                                                                                                   |
| ClientSecret              | Le secret client OIDC configuré.                                                                                                                                                              |
| Resource                  | Ressources accordées avec ce jeton OIDC.                                                                                                                                                      |
| Authority                 | L'autorité à invoquer lors de l'authentification. Il s'agit de l'URL de votre fournisseur OIDC.                                                                                               |
| ResponseType              | Le type de réponse retourné par le fournisseur. La valeur la plus courante ici est `code`                                                                                                     |
| SaveTokens                | Indique s'il faut enregistrer le jeton afin qu'il soit disponible pour des terminaux comme les tableaux de bord.                                                                              |
| CorrelationCookieSameSite | [Paramètres SameSite du témoin de corrélation.](https://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-5.0)                                                           |
| UseTokenLifetime          | Si défini à true, la durée de vie du témoin sera définie sur la durée de vie du jeton. Cela remplace la valeur d'expiration de session.                                                       |
| GetUserInfo               | Retourne des informations supplémentaires sur l'utilisateur à utiliser dans les fichiers roles.ps1. Vous pouvez accéder à ces informations supplémentaires à l'aide de la variable $UserInfo. |

#### WSFed

Paramètres d'authentification WS-Federation.

| Clé                       | Description                                                                                                                             |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Enabled                   | Indique si WS-Fed est activé.                                                                                                           |
| MetadataAddress           | L'adresse de métadonnées permettant de récupérer des informations sur l'instance WS-Fed.                                                |
| Wrealm                    |                                                                                                                                         |
| Wreply                    |                                                                                                                                         |
| CallbackPath              | Le chemin vers lequel le fournisseur OIDC effectuera le rappel.                                                                         |
| UseTokenLifetime          | Si défini à true, la durée de vie du témoin sera définie sur la durée de vie du jeton. Cela remplace la valeur d'expiration de session. |
| CorrelationCookieSameSite | [Paramètres SameSite du témoin de corrélation.](https://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-5.0)     |

#### Seuil d'expiration de session (minutes)

| Clé            | Description                                                                  |
| -------------- | ---------------------------------------------------------------------------- |
| SessionTimeout | Nombre de minutes avant l'expiration d'une session connectée (25 par défaut) |

### **JWT**

Paramètres de configuration des jetons JSON Web Token

**Valeur par défaut**

```javascript
"Jwt": {  
  "SigningKey": "PleaseUseYourOwnSigningKeyHere",  
  "Issuer": "IronmanSoftware",
  "Audience": "PowerShellUniversal"
},
```

| Clé        | Description                                |
| ---------- | ------------------------------------------ |
| SigningKey | La clé de signature des jetons JWT.        |
| Issuer     | L'émetteur qui sera inclus dans le jeton.  |
| Audience   | L'audience qui sera incluse dans le jeton. |

### Secrets

Options pour configurer les coffres de secrets par défaut.

**Valeur par défaut**

```json
"Secrets": {
  "SecretStore": {
    "Password": "PSUSecretStore"
  },
  "Database": {
    "EncryptionKey": "=b0ywQA@VOSdr&R7an5g&XK6NVO%s4Tf",
    "Password": "",
    "KeySize": 128
  },
  "SecretManagement": {
    "OutOfProcess": false
  }
}
```

| Clé                             | Description                                                                                                             |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| SecretStore \ Password          | Le mot de passe du coffre PSUSecretStore. Cela utilise le module Microsoft SecretStore.                                 |
| Database \ EncryptionKey        | La clé de chiffrement AES 128 utilisée pour chiffrer les secrets stockés dans la base de données.                       |
| Database \ Password             | Un mot de passe utilisé pour générer une clé de chiffrement. EncryptionKey sera ignoré si un mot de passe est spécifié. |
| Database \ KeySize              | Le nombre d'octets dans la clé. Doit être un multiple de 128 et vaut 128 par défaut.                                    |
| SecretManagement \ OutOfProcess | Indique si les opérations de gestion des secrets doivent être exécutées hors processus. La valeur par défaut est false. |

#### Générer une clé de chiffrement

Les clés de chiffrement sont de 128 bits et requièrent la bonne longueur. Elles sont encodées sous forme de chaîne base64 et converties en octets au démarrage.

Vous pouvez utiliser le code suivant pour générer une clé secrète de la bonne longueur.

```powershell
$random = [System.Security.Cryptography.RandomNumberGenerator]::Create();
$buffer = New-Object byte[] 16;
$random.GetBytes($buffer);
[Convert]::ToBase64String($buffer)
```

### UniversalAutomation

Paramètres pour les fonctionnalités propres à l'automatisation.

**Valeur par défaut**

```json
"UniversalAutomation": {
    "Queues": [],
    "JobHandshakeTimeout": 30,
    "JobDebugging": false,
    "ContinueJobOnServerStop": false,
    "HangfireWorkerCount" : 100
  }
```

| Clé                     | Description                                                                                                                                                                                                                    |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Queues                  | Files d'attente personnalisées dont cette instance PSU fait partie.                                                                                                                                                            |
| JobHandshakeTimeout     | Le nombre de secondes à attendre avant de faire échouer une tâche après le démarrage du processus PowerShell chargé de l'exécuter, si le processus ne communique pas en retour avec le serveur.                                |
| JobDebugging            | Indique s'il faut générer des fichiers dans le répertoire temporaire au démarrage d'une tâche. Ceci est utile pour le débogage si les tâches expirent avant de démarrer.                                                       |
| ContinueJobOnServerStop | Indique s'il faut poursuivre l'exécution d'une tâche après l'arrêt du service. La progression de la tâche ne pourra pas être rapportée, mais le script continuera de s'exécuter.                                               |
| HangfireWorkerCount     | Le nombre de fils d'exécution Hangfire à démarrer sur le serveur. Ce paramètre est propre au nœud. La valeur par défaut est 100. Il s'agit du nombre total de tâches pouvant s'exécuter simultanément sur le nœud en question. |

### **HideAdminConsole**

```json
{
    "HideAdminConsole": false
}
```

Empêche le service de fournir la console d'administration. Cela empêchera tout utilisateur, y compris les administrateurs, d'utiliser la console d'administration.

### NodeName

```json
{
    "NodeName": ""
}
```

L'option de nom de nœud sert à changer le nom de l'instance PowerShell Universal. Par défaut, il s'agit du nom de l'ordinateur local. Lors de l'utilisation de PowerShell Universal dans un conteneur, cela peut devenir problématique, car le nom peut changer chaque fois que le conteneur est redémarré.

Pour définir un nom de nœud statique, modifiez ce paramètre.

## Ressources statiques

Vous pouvez définir des ressources statiques à l'aide des paramètres de l'appli. Ceux-ci comprennent les variables d'environnement et appsettings.json. Pour définir une ressource, utilisez le nœud `Resources` dans appsettings.json ou le préfixe `Resources` avec une variable d'environnement.

Par exemple, pour définir un rôle statique dans appsettings.json, utilisez ce qui suit.

```json
{
    "Resources": {
        "Roles": [
            {
                "Name": "Static Role",
                "ClaimType": "group",
                "ClaimValue": "xyz123"
            }
        }
    }
}
```

Vous pouvez définir le même rôle à l'aide de variables d'environnement.

```powershell
$ENV:Resources__Roles__0__Name = "Static Role"
$ENV:Resources__Roles__0__ClaimType = "group"
$ENV:Resources__Roles__0__ClaimValue = "xyz123"
```

### Exemple : Docker Compose

Vous pouvez utiliser des variables d'environnement dans un fichier YML Docker Compose pour définir des ressources qui seront disponibles dans PowerShell Universal après son démarrage. L'exemple ci-dessous crée des étiquettes et un rôle, définit un titre d'administration personnalisé, ajoute une licence et définit l'environnement par défaut.

```yaml
services:    
    psu:         
      image: devolutions/powershell-universal:latest
      environment:
          - Resources__Tags__0__Name=Production  
          - Resources__Tags__1__Name=Development
          - Resources__Roles__0__Name=PSUAdmin
          - Resources__Roles__0__ClaimType=groups
          - Resources__Roles__0__ClaimValue=1234567890abcdef1234567890abcdef
          - Resources__Roles__0__Permissions_0=*
          - Resources__Settings__DefaultEnvironment=PowerShell 7
          - Resources__Branding__AdminConsoleTitle=PSU Admin Console
          - Authentication__OIDC__Enabled=true
          - Authentication__OIDC__ClientId=123-123-123-123-123
          - Authentication__OIDC__ClientSecret=secret
          - Authentication__OIDC__Authority=https://login.microsoftonline.com/123-123-123-123
          - PSULICENSE=<License></License>
      ports:
        - "5000:5000"
```

## Paramètres du runtime .NET

Le runtime .NET prend également en charge des paramètres qui s'appliquent à PowerShell Universal. Vous pourriez vouloir ajuster ces paramètres selon vos besoins.

Vous pouvez tout savoir sur les [paramètres du runtime .NET dans la documentation Microsoft](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/).

### Fichiers temporaires excessifs

Dans les environnements Linux, de nombreux fichiers temporaires peuvent être créés par le runtime afin d'activer les fonctionnalités de débogage. [La désactivation des paramètres de diagnostic](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/debugging-profiling#enable-diagnostics) du runtime empêchera cela de se produire. Vous ne pourrez pas utiliser les outils de débogage .NET lorsque cette option est désactivée.

```powershell
$Env:DOTNET_EnableDiagnostics = $false
```

### Voir aussi

* [Devolutions Academy – Créer un point de terminaison de base](https://academy.devolutions.net/student/activity/3466014-creating-a-basic-endpoint)


---

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