> 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/getting-started/upgrading.md).

# Mise à niveau

Mettez à niveau PowerShell Universal en toute sécurité en sauvegardant les données, en suivant les étapes de mise à niveau MSI, IIS, ZIP ou par module, et en validant le serveur pour détecter les chan

## Survol

Ce document couvre le processus de mise à niveau des instances PowerShell Universal en production. Nous aborderons les sujets suivants.

1. Sauvegarde de données
2. Processus de mise à niveau
3. Validation de la mise à niveau

Les binaires de l'application Universal peuvent généralement être mis à niveau sans devoir modifier manuellement la configuration ou la base de données, mais nous recommandons tout de même de sauvegarder les données de production.

## Recommandations

Pour les environnements de production, nous recommandons de déployer PowerShell Universal dans un environnement d'essai ou de développement avant les mises à niveau majeures. Cela permet de faire des tests avant que les utilisateurs finaux ne soient touchés. Vous pouvez utiliser les [licences de développement ](/powershell-universal/fr/licensing.md#developer-license)pour tester des changements dans des instances PowerShell Universal sans acheter une autre licence.

## 1. Sauvegarde de données

PowerShell Universal utilise un système de configuration basé sur des scripts ainsi qu'une base de données servant à conserver des entités telles que les jetons d'application, l'historique des tâches et les identités. Si possible, vous voudrez sauvegarder ces éléments avant d'exécuter une mise à niveau afin de faciliter le retour en arrière si un problème survient durant la validation.

### Base de données

La sauvegarde de la base de données garantit que tous les jetons d'application, l'historique des tâches, les identités et les secrets de la base de données sont conservés en cas d'échec de la mise à niveau. Les bases de données SQL peuvent également ajuster le schéma de la base de données et exiger un retour en arrière non seulement des données, mais aussi du schéma des tables de la base de données.

#### SQLite

Par défaut, PowerShell Universal utilise une base de données à fichier unique appelée SQLite. À moins d'une configuration différente, la base de données est stockée dans `%ProgramData%\UniversalAutomation`. Vous devriez avoir un fichier `database.db` et possiblement un fichier `database-log.db`. Ces deux fichiers doivent être sauvegardés. Le service doit être arrêté pour pouvoir sauvegarder les fichiers.

#### SQL

Lorsque vous utilisez SQL pour la persistance, sauvegardez toute la base de données (y compris le schéma). Il n'est pas nécessairement requis d'arrêter le service PowerShell Universal lors de la sauvegarde de la base de données, mais celui-ci pourrait continuer à écrire dans la base de données (par exemple lors de l'exécution de tâches planifiées) après la fin de la sauvegarde.

### Scripts de configuration

Les scripts constituent les principales données de configuration à sauvegarder lors de la mise à niveau d'une instance PowerShell Universal en production. Pour la production, nous recommandons d'utiliser un système de contrôle de version. Vous pouvez aussi profiter de l'intégration git intégrée. Si vous utilisez une synchronisation bidirectionnelle pour l'intégration git de PowerShell Universal, envisagez d'étiqueter votre branche git avant la mise à niveau afin de permettre un retour en arrière facile en cas de changements inattendus dans le dépôt git.

## 2. Progression de la mise à niveau

Vous trouverez ci-dessous des sections pour chaque type de mise à niveau de système ainsi que les étapes à suivre selon la façon dont vous avez installé PSU à l'origine.

### MSI

Lors de l'installation par MSI, vous voudrez suivre les mêmes procédures de sauvegarde décrites ci-dessus.

#### appsettings.json

Vous voudrez sauvegarder le fichier `appsettings.json` stocké dans `%ProgramData%\PowerShellUniversal`. Ce fichier contient des informations telles que le port, l'emplacement de stockage des données et d'autres paramètres du serveur. En général, le MSI ne modifie pas ce fichier une fois qu'il est créé. Il utilisera les paramètres trouvés pour la version mise à niveau. Cela dit, si nécessaire, le MSI apportera des modifications au fichier appsettings. Ces modifications sont considérées comme majeures et seront indiquées dans le journal des modifications de la version.

#### Compte de service

Lors de l'exécution d'une mise à niveau MSI, le service PSU n'est pas désinstallé et, par conséquent, le compte de service sera toujours défini au démarrage du service.

{% hint style="info" %}
Si vous effectuez une désinstallation, puis une installation à l'aide du MSI, le compte de service sera supprimé.
{% endhint %}

#### Processus de mise à niveau

Une fois tous les fichiers de configuration et la base de données sauvegardés, vous pouvez exécuter le nouvel installateur MSI.

L'installateur pourrait demander un redémarrage de la machine si des fichiers sont verrouillés. Le MSI de PSU désinstallera tous les fichiers du répertoire d'installation et installera des fichiers entièrement nouveaux.

Une fois le MSI terminé, vous pouvez accéder à votre console d'administration PowerShell Universal pour effectuer la validation de l'installation.

### IIS

Vous trouverez ci-dessous des informations sur la mise à niveau d'une installation IIS.

#### web.config

En plus des fichiers énumérés ci-dessus à sauvegarder, vous voudrez aussi envisager de sauvegarder votre fichier `web.config`. Si vous n'avez apporté aucune modification à ce fichier, il n'est pas nécessaire de le sauvegarder.

Le fichier `web.config` inclus dans le répertoire d'installation de l'application sera écrasé lors des mises à niveau. Si vous avez déplacé votre fichier web.config à un autre emplacement, il ne sera pas écrasé. Lors de la création d'un site Web IIS, vous pouvez simplement inclure le fichier `web.config` dans le répertoire de l'application web et faire en sorte que les [binaires soient stockés à un emplacement différent](/powershell-universal/fr/config/hosting/hosting-iis.md).

#### Processus de mise à niveau

Lors d'une mise à niveau avec IIS, vous devrez d'abord arrêter votre pool d'applications pour vous assurer que les binaires utilisés par IIS ne sont plus utilisés, puis remplacer les binaires par les nouveaux. Pour que la mise à niveau fonctionne comme prévu, il est recommandé de supprimer tous les fichiers de l'application, puis de décompresser les nouveaux dans le même répertoire afin d'éviter les conflits d'assemblages.

{% hint style="info" %}
Comme pour toute installation à partir d'un fichier ZIP, assurez-vous d'exécuter `Get-ChildItem -Recurse | Unblock-File` à partir d'une invite de commande élevée sur les fichiers PowerShell Universal afin de garantir qu'ils puissent s'exécuter correctement.
{% endhint %}

Une fois les nouveaux fichiers copiés et débloqués, démarrez le pool d'applications, accédez à la console d'administration PowerShell Universal et effectuez la validation de l'installation.

### Module Universal

Le module Universal peut être utilisé pour mettre à niveau les installations de PowerShell Universal préalablement installées par le module.

{% hint style="warning" %}
N'utilisez pas le module Universal pour mettre à niveau des instances installées par MSI.
{% endhint %}

Suivez les procédures de sauvegarde ci-dessus, puis effectuez la mise à niveau.

D'abord, mettez à niveau le module PowerShell Universal local et vérifiez que la version attendue est installée.

```powershell
Update-Module Devolutions.PowerShellUniversal
Import-Module Devolutions.PowerShellUniversal -PassThru
```

Ensuite, exécutez `Update-PSUServer` pour télécharger et décompresser la nouvelle instance PSU.

```powershell
Update-PSUServer
```

Une fois la mise à niveau terminée, accédez à la console d'administration PowerShell Universal et commencez la validation de la mise à niveau.

### ZIP

Effectuez les procédures de sauvegarde nécessaires et téléchargez le plus récent ZIP de PowerShell Universal.

Arrêtez le service PowerShell Universal. Supprimez les fichiers d'application PowerShell Universal existants. Extrayez les fichiers ZIP dans le même répertoire. Enfin, exécutez `Unblock-File` sur le répertoire pour vous assurer que PSU peut s'exécuter correctement. Exécutez toujours cette commande en tant qu'administrateur.

```powershell
Get-ChildItem -Recurse | Unblock-File
```

Une fois la mise à niveau terminée, accédez à la console d'administration PowerShell Universal et commencez la validation de la mise à niveau.

### Base de données

Par défaut, le service PSU migrera vers la plus récente version de la base de données durant le processus de démarrage.

La base de données peut également être mise à niveau avant la mise à niveau de l'application. Cela est recommandé pour les installations plus importantes qui pourraient nécessiter un certain temps pour la mise à jour du schéma. Dans certains environnements, laisser le service mettre à niveau la base de données peut entraîner un délai d'expiration, comme avec le Gestionnaire de contrôle des services dans Windows.

Si vous utilisez SQL, vous trouverez des fichiers SQL générés et placés dans le dossier SQL du média d'installation de PSU. Exécutez ces scripts sur votre base de données avant la mise à niveau.

Tous les types de bases de données prennent en charge l'outil de ligne de commande `psu` pour les mises à niveau.

```powershell
psu db schema latest --connection-string "Data Source=C:\ProgramData\UniversalAutomation\database.db"
```

## 3. Validation de la mise à niveau

Après avoir exécuté une mise à niveau, vous devriez effectuer une validation de base de votre serveur PSU afin de vous assurer qu'il est entièrement fonctionnel.

### Notifications

Vérifiez qu'il n'y a aucune erreur dans la liste déroulante des notifications. Elles pourraient être le signe de problèmes survenus durant la mise à niveau.

### Modules

Les mises à niveau de PowerShell Universal peuvent modifier les versions d'assemblage des DLL livrées avec la plateforme. Cela peut empêcher le chargement d'autres modules. Bien que cela ne soit pas nécessairement évident au départ, vous pourriez envisager de faire l'inventaire des modules utilisés dans votre plateforme afin de vous assurer que les versions sont cohérentes avant et après la mise à niveau, pour limiter les changements.

Si vous avez installé une version du module `Universal` en dehors de PowerShell Universal (par exemple, avec `Install-Module`), vous devez vous assurer de mettre à jour le module, sinon il pourrait entrer en conflit avec le nouveau installé avec PowerShell Universal.

### Applis

Les problèmes de mise à niveau les plus courants proviennent de changements dans le cadre d'applications Universal. Les applis peuvent être complexes et les correctifs de bogues ou les fonctionnalités peuvent parfois causer des problèmes pour l'appli d'un utilisateur tout en corrigeant des problèmes liés à l'appli d'un autre utilisateur. Veuillez lire le journal des modifications avant la mise à niveau afin de comprendre l'incidence des changements apportés au cadre d'applications et envisagez de tester l'appli avec des données de développement avant de faire la mise à niveau en production.

## Problèmes de mise à niveau courants

### Le pool d'applications IIS ne démarre pas après la mise à niveau

Le problème de mise à niveau le plus courant est que `Unblock-File` n'est pas appelé correctement sur les fichiers extraits lors de la mise à niveau d'une installation ZIP IIS. Assurez-vous également d'exécuter la commande `Unblock-File` de manière récursive et à partir d'une session administrative.

Un autre problème courant est l'extraction des fichiers par-dessus les fichiers existants. Cela peut causer des conflits d'assemblages et place l'application dans un état inconnu. Suivez la documentation de mise à niveau IIS et supprimez les fichiers avant de les extraire.

### Erreurs de commande introuvable

Lorsque de nouvelles fonctionnalités sont ajoutées à PowerShell Universal, cela se fait généralement à l'aide de nouvelles applets de commande. Si d'anciennes versions du module PowerShell Universal sont installées sur le système, cela peut causer des conflits avec celui livré dans le média d'installation. Assurez-vous d'avoir supprimé les anciennes versions du module `Universal` si vous rencontrez ces erreurs.

### Erreur de table ou colonne introuvable lors de l'utilisation de la persistance SQL

Cela peut se produire si les mises à niveau du schéma SQL ne sont pas exécutées durant les mises à niveau. Si vous définissez le paramètre `RunMigrations` à `false` dans `appsettings.json`, vous devez exécuter les migrations manuellement, sinon le service PowerShell Universal ne fonctionnera pas correctement.

### Changement majeur d'un composant d'appli

Ces changements peuvent être visuels ou fonctionnels. Veuillez vous assurer de consulter le journal des modifications pour les éléments qui pourraient être liés au changement que vous observez. Envisagez de publier sur les forums ou d'ouvrir un problème GitHub afin de savoir si le problème est intentionnel et s'il existe une solution de contournement viable.

{% hint style="info" %}
Nous faisons tous les efforts possibles pour prendre en charge les applis de chacun sans changements majeurs. Cela dit, chaque configuration est plutôt unique, alors nous serons plus qu'heureux de traiter les problèmes que vous pourriez rencontrer. S'il vous plaît, faites-nous-en part.
{% endhint %}

### Problèmes de licence après la mise à niveau

Le modèle de licence de PowerShell Universal permet aux utilisateurs licenciés de mettre à niveau vers la version la plus récente tant qu'ils disposent d'une licence perpétuelle ou d'abonnement active. Si vous tentez de mettre à niveau un serveur qui n'est plus dans la période de licence, le serveur ne fonctionnera pas comme prévu. Vous devrez revenir à la version précédente pour rétablir la fonctionnalité.

De plus, vous pourriez rencontrer des problèmes en raison du redémarrage du service PSU. Au démarrage du service, celui-ci vérifie l'état de l'abonnement de licence. S'il n'y parvient pas, il pourrait ne pas être correctement licencié et causer d'autres problèmes. La cause fondamentale est généralement des problèmes de réseau lors de la tentative d'accès aux sites Web IronmanSoftware.com ou Devolutions.net pour l'activation. Les clés de licence hors ligne n'utilisent pas Internet et ne rencontreront pas ce problème.

Si vous éprouvez un problème avec une licence que vous ne pouvez pas résoudre, n'hésitez pas à communiquer avec le [soutien Devolutions](mailto:service@devolutions.net).

### Versions mixtes

Le mélange de versions de serveurs PowerShell Universal partageant la même base de données peut causer des problèmes, car les changements de schéma de la base de données ou les changements de protocole dans les API internes pourraient ne pas concorder. Nous recommandons d'échelonner vos mises à niveau de façon à éventuellement exécuter tous les serveurs PowerShell Universal avec la même version.

{% hint style="warning" %}
Il existe un problème de compatibilité connu entre PSU 5.5.4 et versions antérieures et PSU 5.6.0 et versions ultérieures. Nous ne recommandons pas de mélanger ces versions. La planification des tâches peut échouer sur les serveurs 5.5.4 existants lorsqu'ils sont combinés à des serveurs 5.6.0.
{% endhint %}

## Changements majeurs de la version 5.0

### Retrait des pages

Le concepteur de pages par glisser-déposer a été retiré au profit des [pages du portail](/powershell-universal/fr/portal/portal-pages.md) et des [widgets](/powershell-universal/fr/portal/portal-widgets.md).

### Retrait du concepteur de pages d'applis

Le concepteur de pages par glisser-déposer pour les applis a été retiré. Les applis créées avec le concepteur continueront de fonctionner.

### Retrait des contrôles d'accès

Les contrôles d'accès ont été supprimés au profit des [Permissions](/powershell-universal/fr/securite/enterprise-security/permissions.md). Vous pouvez aussi utiliser le [Portal ](/powershell-universal/portal/portal.md)pour attribuer des ressources, comme des scripts, aux utilisateurs sans avoir besoin de permissions compliquées.

### Changements au canal de communication et à l'autorisation des applets de commande

Avant la v5, les applets de commande envoyaient des données par HTTP ou en utilisant un canal gRPC interne. Maintenant, toutes les applets de commande utilisent un canal gRPC exposé à l'externe qui est protégé par authentification et autorisation. Elles n'utilisent plus les appels HTTP d'API REST standard.

Cela peut poser problème pour les instances PowerShell Universal derrière des [proxys inverses](/powershell-universal/fr/config/hosting/reverse-proxy.md) et exige que les bonnes valeurs d'en-tête soient envoyées.

Veuillez consulter la documentation sur le [module ](/powershell-universal/fr/config/module.md)pour plus d'informations.

#### Erreurs d'applets de commande courantes que vous pourriez rencontrer durant la mise à niveau

#### Code d'état HTTP 403

L'applet de commande que vous appelez n'a pas accès aux API de PowerShell Universal. Vous devrez spécifier un paramètre -AppToken sur les applets de commande afin de pouvoir les utiliser.

Vous pouvez également activer le [modèle de sécurité d'API permissif](/powershell-universal/fr/config/module.md#authorization-security-model) pour permettre les applets de commande appelées à l'interne depuis PowerShell Universal sans avoir besoin d'autorisation.

#### URI non défini

Les applets de commande ne parviennent pas à déterminer comment appeler les API de PowerShell Universal. Vous devrez soit spécifier un paramètre -ComputerName, soit configurer l'URL de l'API dans appsettings.json.

```json
{
   "API" : {
      "URL": "http://localhost:5000"
   }
}
```

#### Erreur de certificat SSL

Si vous utilisez un certificat autosigné, vous devrez spécifier le paramètre `-TrustCertificate` des applets de commande.

### L'environnement PowerShell 7 n'utilise plus Pwsh.exe

L'environnement PowerShell 7 par défaut utilise une version .NET de l'exécutable Universal.Agent.exe exécutant PowerShell 7.5. Cela permet la plus grande compatibilité avec les bibliothèques PowerShell Universal et les autres modules.

Il est toujours possible d'utiliser le processus pwsh.exe dans des configurations d'environnement personnalisées.

### Paquet d'hébergement IIS

Si vous hébergez dans IIS, assurez-vous d'installer le [bundle d'hébergement .NET 9.0](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-9.0.4-windows-hosting-bundle-installer).

### Version de PowerShell de l'environnement intégré

L'environnement intégré utilise maintenant PowerShell 7.5.

### SQLite par défaut

SQLite est la méthode de persistance par défaut. Vous devrez effectuer une conversion manuelle depuis LiteDB avant d'installer la version 5.

### Prise en charge de LiteDB retirée

LiteDB a été retiré en tant que moteur de base de données pris en charge. Avec les fichiers d'installation de PowerShell Universal, vous trouverez `psu.exe`. Il peut être utilisé pour convertir une base de données LiteDB en base de données SQLite. Utilisez la ligne de commande suivante.

```powershell
.\psu.exe db convert --Path "$ENV:ProgramData\UniversalAutomation\database.db"
```

L'outil créera un fichier `database.bak` avant d'effectuer la conversion. La progression sera indiquée dans la console.

Après la conversion de la base de données, vous devrez mettre à jour le fichier `appsettings.json` pour utiliser le nouveau module d'extension SQLite et mettre à jour la chaîne de connexion au format SQLite. Voici un extrait que vous pouvez appliquer à votre fichier de configuration.

```json
{
    "Plugins": [
        "SQLite"
    ],
    "Data": {
        "ConnectionString": "Data Source=C:\\ProgramData\\UniversalAutomation\\database.db"
    }
}
```

#### Convertir une base de données pour une mise à niveau MSI

Pour que l'installateur de PowerShell Universal s'exécute correctement, vous devrez mettre à jour la base de données avant d'exécuter l'installateur MSI. Voici les étapes à suivre pour ce faire.

1. Téléchargez le paquet ZIP pour Windows et extrayez-le dans un répertoire local.
2. Arrêtez le service PowerShell Universal
3. Exécutez la commande psu.exe à partir du répertoire ZIP, comme indiqué ci-dessus, pour convertir le fichier de base de données dans %ProgramData%\UniversalAutomation
4. Mettez à jour le fichier %ProgramData%\PowerShellUniversal\appsettings.json pour utiliser le module d'extension SQLite plutôt que le module d'extension LiteDB
5. Exécutez l'installateur de PowerShell Universal v5 pour mettre à niveau les fichiers de l'application.

### Mode Bureau supprimé

Le mode Bureau a été supprimé. Les ressources telles que les touches de raccourci, les associations de fichiers et les raccourcis ne sont plus prises en charge. Le MSI prend maintenant en charge les installations de portée Utilisateur qui s'exécuteront en tant qu'utilisateur actuel et démarreront à l'ouverture de session.

### Install-PSUServer sur Windows s'installe à partir du MSI

Dans les versions précédentes de PowerShell Universal, cette commande s'installait dans un répertoire et créait le service manuellement. Cette commande s'installe maintenant à partir du MSI. Si vous avez précédemment effectué l'installation avec ce module, vous devrez supprimer l'installation existante avec une version précédente du module, puis installer avec la nouvelle version du module.

```powershell
Install-Module Universal -RequiredVersion 4.4.0
Remove-PSUServer
```

Ouvrez une nouvelle invite de commande et exécutez ce qui suit.

```powershell
Uninstall-Module Devolutions.PowerShellUniversal
Install-Module Devolutions.PowerShellUniversal
Install-PSUServer
```

### Stockage de base de données Git supprimé

PowerShell Universal ne prend plus en charge le stockage du dépôt git directement dans la base de données. Nous recommandons d'utiliser un fournisseur git distant comme GitHub, GitLab ou Gitea. PowerShell Universal v5 prend en charge les dépôts git locaux sans devoir se synchroniser avec un dépôt distant. Cela permet de stocker l'historique des fichiers directement sur le serveur PowerShell Universal.

### Suppression de la carte thermique et du regroupement de marqueurs dans New-UDMap

Les cartes ne prennent plus en charge les cartes thermiques ni les regroupements de marqueurs.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/powershell-universal/fr/getting-started/upgrading.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
