> 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'application

Les paramètres de l'application se trouvent dans le fichier `appsettings.json` situé dans le 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` dans le répertoire d'installation sera écrasé lors des mises à niveau.

{% hint style="info" %}
Lorsqu'il est installé depuis le 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 souhaitez remplacer les paramètres JWT, vous pouvez 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 souhaitez modifier la clé de signature JWT via une variable d'environnement, vous définiriez la variable `$Env:Jwt__SigningKey`. Si vous souhaitez 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 / Points de terminaison

**Valeur par défaut**

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

La section des points de terminaison 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 telles que 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 redirigera les requêtes HTTP vers HTTPS.                                                                  |
| BasePath          | Obligatoire lors de la configuration de PowerShell Universal comme site imbriqué dans IIS. Doit contenir la route IIS imbriquée, par exemple `/psu`. |
| Hsts \ MaxAgeDays | Définit la durée maximale en jours pour [HTTP Strict Transport Security](https://https.cio.gov/hsts/).                                               |
| CookiePolicy      | Lorsque défini à SameSiteNone, la valeur SameSite=None sera appliquée aux cookies dans PSU. Ceci est utile pour héberger PSU dans des iframes.       |
| Headers           | Un objet dont les clés sont les en-têtes à définir sur chaque requête, avec comme valeur celle 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. Cette valeur sera remplacée par le niveau de journal dans settings.ps1 après son chargement. Ce paramètre est utile pour déboguer les problèmes lors du 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 est autorisé.

### **CorsHosts**

**Valeur par défaut**

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

Configure les hôtes autorisés à effectuer des requêtes de partage de ressources entre origines multiples (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                  | Le dépôt Git distant utilisé pour la synchronisation avec Universal.                                                                                                                        |
| GitBranch                  | La branche Git à extraire lors de la synchronisation avec Universal.                                                                                                                        |
| GitUserName                | Le nom d'utilisateur Git utilisé pour la synchronisation avec le GitRemote. Lors de l'utilisation d'un PAT, cette valeur peut être quelconque.                                              |
| GitPassword                | Le mot de passe utilisateur Git ou le jeton d'accès personnel utilisé pour la synchronisation avec le GitRemote.                                                                            |
| GitSyncTimeout             | Le nombre de secondes avant l'expiration d'une commande du client Git externe. Par défaut : 60 secondes.                                                                                    |
| ConfigurationScript        | Emplacement d'un script de configuration personnalisé à charger. Vous pouvez retourner des objets tels que des scripts, des tableaux de bord et des points de terminaison depuis ce script. |
| ExternalGitClient          | Lorsque défini à true, le client Git du système d'exploitation sera utilisé à la place de la bibliothèque cliente intégrée.                                                                 |
| Mode                       | Définit le mode Git. Il peut être soit manual soit automatic. Par défaut : manual.                                                                                                          |
| SlowQueryLimit             | Le nombre de millisecondes qu'une requête SQL doit prendre avant qu'un message de journal 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 tel qu'IIS. Lors de l'utilisation de cmdlets comme `Get-UAScript` depuis une tâche en cours d'exécution, le serveur Universal doit déterminer l'emplacement du serveur web. Lors de l'exécution derrière un proxy, il ne peut pas le déterminer lui-même. Vous devrez configurer cette valeur pour qu'elle pointe vers le nom et le port du site web IIS dans cette configuration. |
| HideManagementDoc | Si la valeur est true, masque la documentation OpenAPI de l'API de gestion de PowerShell Universal.                                                                                                                                                                                                                                                                                                                                                                                                                       |

{% hint style="warning" %}
\`Api.Url\` est utilisé en interne par PowerShell Universal lorsque des cmdlets doivent rappeler le serveur PSU depuis des tâches, des points de terminaison ou d'autres contextes d'exécution internes. Dans les environnements avec proxy inverse ou répartition 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 point de terminaison indirect peut provoquer des échecs intermittents des cmdlets si cet alias est résolu via un proxy ou un chemin backend instable. Si nécessaire, spécifiez explicitement `-ComputerName` lors de l'appel du cmdlet.
{% 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 vers lequel le fournisseur OIDC effectuera le rappel.                                                                                                                 |
| ClientID                  | L'identifiant client OIDC configuré.                                                                                                                                            |
| ClientSecret              | Le secret client OIDC configuré.                                                                                                                                                |
| Resource                  | Les 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 pour qu'il soit accessible aux points de terminaison tels que les tableaux de bord.                                                      |
| CorrelationCookieSameSite | [Paramètres SameSite du cookie 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 cookie sera définie sur la durée de vie du jeton. Ceci remplace la valeur du délai d'expiration de session.                                |
| GetUserInfo               | Retourne des informations utilisateur supplémentaires à utiliser dans les fichiers roles.ps1. Vous pouvez accéder à ces informations supplémentaires via la variable $UserInfo. |

#### WSFed

Paramètres d'authentification WS-Federation.

| Clé                       | Description                                                                                                                                      |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| Enabled                   | Indique si WS-Fed est activé.                                                                                                                    |
| MetadataAddress           | L'adresse des métadonnées permettant de récupérer les 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 cookie sera définie sur la durée de vie du jeton. Ceci remplace la valeur du délai d'expiration de session. |
| CorrelationCookieSameSite | [Paramètres SameSite du cookie 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 (par défaut : 25). |

### **JWT**

Paramètres de configuration des jetons web JSON.

**Valeur par défaut**

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

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

### Secrets

Options de configuration des 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
  }
}
```

| Clé                      | Description                                                                                                             |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| SecretStore \ Password   | Le mot de passe du coffre PSUSecretStore. 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 le 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.                                    |

#### Génération d'une clé de chiffrement

Les clés de chiffrement sont de 128 bits et nécessitent une longueur appropriée. 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 longueur appropriée.

```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 spécifiques à l'automatisation.

**Valeur par défaut**

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

| Clé                     | Description                                                                                                                                                                                                              |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Queues                  | Les files d'attente personnalisées dont cette instance PSU fait partie.                                                                                                                                                  |
| JobHandshakeTimeout     | Le nombre de secondes à attendre avant d'échouer une tâche après le démarrage du processus PowerShell, si ce dernier ne communique pas avec le serveur.                                                                  |
| JobDebugging            | Indique s'il faut générer des fichiers dans le répertoire temporaire lors du démarrage d'une tâche. Ceci est utile pour déboguer les tâches qui expirent avant de démarrer.                                              |
| ContinueJobOnServerStop | Indique s'il faut continuer à exécuter une tâche après l'arrêt du service. La progression de la tâche ne pourra plus être rapportée, mais le script continuera à s'exécuter.                                             |
| HangfireWorkerCount     | Le nombre de threads de travail Hangfire à démarrer sur le serveur. Ce paramètre est spécifique au nœud. Par défaut : 100. Il s'agit du nombre total de tâches pouvant s'exécuter simultanément sur le nœud particulier. |

### **HideAdminConsole**

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

Empêche le service d'afficher la console d'administration. Cela empêchera l'utilisation de la console d'administration par tout utilisateur, y compris les administrateurs.

### NodeName

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

L'option de nom de nœud est utilisée pour modifier 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 redémarrage du conteneur.

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'application. Celles-ci incluent 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 Docker Compose YML pour définir des ressources qui seront disponibles dans PowerShell Universal après son démarrage. L'exemple ci-dessous crée des étiquettes, un rôle, définit un titre d'administrateur personnalisé, ajoute une licence et définit l'environnement par défaut.

```yaml
services:    
    psu:         
      image: ironmansoftware/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 pouvez souhaiter ajuster ces paramètres selon vos besoins.

Vous pouvez trouver toutes les informations 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, le runtime peut créer de nombreux fichiers temporaires pour activer les fonctionnalités de débogage. [La désactivation des paramètres de diagnostics](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/debugging-profiling#enable-diagnostics) du runtime empêchera cela. Vous ne pourrez pas utiliser les outils de débogage .NET si cette option est désactivée.

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


---

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