Anavem
Languageen
Comment résoudre l'erreur 'Impossible d'installer le fournisseur NuGet pour PowerShell'

Comment résoudre l'erreur 'Impossible d'installer le fournisseur NuGet pour PowerShell'

Résolvez les erreurs d'installation du fournisseur NuGet dans PowerShell en activant TLS 1.2, en mettant à jour les modules PowerShellGet et en résolvant les problèmes de connexion qui empêchent le téléchargement des modules depuis PowerShell Gallery.

14 avril 2026 12 min
mediumpowershell 9 étapes 12 min

Pourquoi l'installation du fournisseur NuGet échoue-t-elle dans PowerShell ?

L'erreur "Impossible d'installer le fournisseur NuGet pour PowerShell" est l'un des problèmes les plus frustrants que rencontrent les administrateurs PowerShell lorsqu'ils essaient d'installer des modules depuis la PowerShell Gallery. Cette erreur apparaît généralement lors de la tentative d'installation de modules populaires comme ExchangeOnlineManagement, AzureAD, ou tout module qui dépend du fournisseur de packages NuGet.

La cause principale provient généralement de trois problèmes principaux : des paramètres de protocole TLS obsolètes qui empêchent les connexions sécurisées à la PowerShell Gallery, des modules PackageManagement et PowerShellGet obsolètes fournis avec Windows, ou des conflits entre plusieurs versions de ces modules de base. Windows Server 2016 et les systèmes plus anciens sont particulièrement vulnérables car ils n'activent pas TLS 1.2 par défaut, ce que PowerShell Gallery exige pour la sécurité.

Pourquoi cette erreur est-elle si courante dans les environnements d'entreprise ?

Les environnements d'entreprise rencontrent des défis supplémentaires en raison des serveurs proxy, des restrictions de pare-feu et des politiques de groupe qui peuvent interférer avec les téléchargements du fournisseur NuGet. De nombreuses organisations ont également des processus de contrôle des changements stricts qui retardent les mises à jour du système, laissant les serveurs fonctionner avec les modules PowerShell d'origine fournis avec le système d'exploitation.

Le problème est aggravé par la décision de Microsoft d'inclure une version "bootstrap" du fournisseur NuGet (version 2.8.5.208) qui échoue souvent à se mettre à jour correctement. Lorsque les administrateurs essaient la solution évidente de lancer Install-PackageProvider -Name NuGet, ils se retrouvent souvent dans une dépendance circulaire où la commande a besoin de NuGet pour installer NuGet.

Ce tutoriel propose une approche systématique pour résoudre ces problèmes de manière permanente. Vous apprendrez comment activer les protocoles TLS appropriés, mettre à jour l'infrastructure des modules sous-jacents et résoudre les problèmes de connectivité réseau qui empêchent l'installation réussie du fournisseur NuGet. À la fin, vous aurez un environnement PowerShell pleinement fonctionnel capable d'installer n'importe quel module depuis la PowerShell Gallery.

Guide de mise en oeuvre

Procédure complète

01

Ouvrez PowerShell en tant qu'administrateur

Commencez par lancer PowerShell avec des privilèges élevés. C'est crucial car l'installation des fournisseurs NuGet et la mise à jour des modules système nécessitent un accès administrateur.

Cliquez avec le bouton droit sur le bouton Démarrer de Windows et sélectionnez "Windows PowerShell (Admin)" ou "Terminal (Admin)" sur Windows 11. Si vous utilisez PowerShell 7, recherchez "PowerShell" dans le menu Démarrer, cliquez dessus avec le bouton droit et sélectionnez "Exécuter en tant qu'administrateur".

Vérification : Le titre de votre fenêtre PowerShell devrait afficher "Administrateur" et l'invite devrait afficher votre chemin système avec des privilèges administrateur.

Avertissement : Ne sautez jamais l'exécution en tant qu'administrateur lorsque vous traitez des problèmes de fournisseur NuGet. Les installations au niveau utilisateur échouent souvent en raison de conflits de permissions avec les modules système existants.
02

Activer le protocole TLS 1.2

La cause la plus courante des échecs d'installation du fournisseur NuGet est que PowerShell utilise des protocoles TLS obsolètes. PowerShell Gallery nécessite TLS 1.2, mais les systèmes plus anciens utilisent par défaut TLS 1.0 ou 1.1.

Exécutez cette commande pour activer TLS 1.2 pour la session en cours :

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Vérification : Vérifiez le paramètre de protocole actuel :

[Net.ServicePointManager]::SecurityProtocol

Vous devriez voir "Tls12" dans la sortie. Si vous voyez "SystemDefault" ou des protocoles plus anciens, la commande a fonctionné et a amélioré la sécurité de votre connexion.

Astuce pro : Pour rendre TLS 1.2 permanent, ajoutez la commande TLS à votre profil PowerShell. Exécutez notepad $PROFILE et ajoutez la ligne TLS pour l'activer automatiquement à chaque session.

Cette étape est particulièrement importante sur Windows Server 2016, où TLS 1.2 n'est pas activé par défaut.

03

Vérifier les versions actuelles des modules

Avant de tenter des corrections, identifiez les versions de PackageManagement et PowerShellGet que vous utilisez. Des versions obsolètes sont la cause principale de la plupart des problèmes de fournisseur NuGet.

Vérifiez les versions actuelles de vos modules :

Get-Module PackageManagement -ListAvailable | Select-Object Name, Version
Get-Module PowerShellGet -ListAvailable | Select-Object Name, Version

Recherchez plusieurs versions installées. Les combinaisons problématiques sont :

  • PackageManagement 1.0.0.1 avec PowerShellGet 1.0.0.1
  • Toute version avec le fournisseur NuGet 2.8.5.208 (version bootstrap)
  • Modules PackageManagement manquants ou corrompus

Vérifiez également l'état du fournisseur NuGet :

Get-PackageProvider -Name NuGet -ErrorAction SilentlyContinue

Si cela renvoie une erreur ou affiche la version 2.8.5.208, vous devez mettre à jour vos modules.

Vérification : Notez les versions que vous voyez. PackageManagement doit être en version 1.1.0.0 ou plus récente, et PowerShellGet doit être en version 2.x ou plus récente pour un fonctionnement optimal.

04

Mettre à jour le module PowerShellGet

La solution la plus efficace est de mettre à jour PowerShellGet, qui installe automatiquement le dernier fournisseur NuGet. Cette approche est préférée à l'installation manuelle du fournisseur NuGet.

Forcer l'installation du dernier module PowerShellGet :

Install-Module PowerShellGet -Force -AllowClobber

Lorsque vous êtes invité à installer le fournisseur NuGet, tapez Y et appuyez sur Entrée. Le paramètre -AllowClobber permet d'écraser les commandes existantes, ce qui est nécessaire lors de la mise à jour des modules principaux.

Si vous rencontrez des problèmes de confiance avec la PowerShell Gallery, définissez-la temporairement comme de confiance :

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
Install-Module PowerShellGet -Force -AllowClobber
Set-PSRepository -Name PSGallery -InstallationPolicy Untrusted

Vérification : Après l'installation, fermez et rouvrez PowerShell en tant qu'administrateur, puis vérifiez la nouvelle version :

Get-Module PowerShellGet -ListAvailable | Sort-Object Version -Descending | Select-Object -First 1

Vous devriez voir la version 2.x ou plus récente.

Avertissement : Après avoir mis à jour PowerShellGet, ne lancez jamais Install-PackageProvider -Name NuGet à nouveau. Cela peut ramener votre fournisseur NuGet à la version bootstrap problématique 2.8.5.208.
05

Alternative : Mise à jour manuelle de PackageManagement

Si la mise à jour de PowerShellGet échoue, mettez à jour manuellement PackageManagement. Cette méthode fonctionne lorsque des problèmes de réseau ou des conflits de modules empêchent le processus de mise à jour standard.

Tout d'abord, essayez l'approche d'installation directe :

Install-Module PackageManagement -Force -AllowClobber

Si cela échoue, utilisez la méthode de téléchargement manuel :

  1. Ouvrez un navigateur web et accédez à : https://www.powershellgallery.com/packages/PackageManagement
  2. Cliquez sur l'onglet "Manual Download" et téléchargez le dernier fichier .nupkg
  3. Renommez le fichier .nupkg en .zip et extrayez-le
  4. Copiez le contenu vers : C:\Program Files\WindowsPowerShell\Modules\PackageManagement\1.1.0.0

Créez la structure de répertoires si elle n'existe pas :

$ModulePath = "$env:ProgramFiles\WindowsPowerShell\Modules\PackageManagement\1.1.0.0"
New-Item -Path $ModulePath -ItemType Directory -Force

Après l'installation manuelle, redémarrez PowerShell en tant qu'administrateur et vérifiez :

Import-Module PackageManagement -Force
Get-Module PackageManagement

Vérification : La version devrait afficher 1.1.0.0 ou plus récent. Essayez maintenant d'installer à nouveau PowerShellGet :

Install-Module PowerShellGet -Force
06

Nettoyer les versions de modules conflictuelles

Plusieurs versions de PackageManagement et PowerShellGet peuvent causer des conflits. Nettoyez les anciennes versions tout en préservant les modules système de base.

Tout d'abord, identifiez toutes les versions installées :

Get-Module PackageManagement -ListAvailable | Format-Table Name, Version, ModuleBase
Get-Module PowerShellGet -ListAvailable | Format-Table Name, Version, ModuleBase

Supprimez les versions problématiques, mais conservez la version 1.0.0.1 (module système de base). Recherchez les versions dans ces emplacements :

  • C:\Program Files\WindowsPowerShell\Modules
  • C:\Users\[Username]\Documents\WindowsPowerShell\Modules

Supprimez manuellement les versions conflictuelles :

# Supprimer les anciennes versions installées par l'utilisateur (chemins d'exemple)
Remove-Item "$env:USERPROFILE\Documents\WindowsPowerShell\Modules\PackageManagement\1.0.0.1" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\Documents\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1" -Recurse -Force -ErrorAction SilentlyContinue

Vérifiez votre chemin de module pour tout emplacement personnalisé :

$env:PSModulePath -split ';'

Vérification : Après le nettoyage, redémarrez PowerShell et vérifiez que seules les versions correctes restent :

Get-Module PackageManagement, PowerShellGet -ListAvailable | Sort-Object Name, Version
Astuce pro : Ne supprimez jamais les modules de C:\Windows\System32\WindowsPowerShell\v1.0\Modules. Ce sont des modules système essentiels au bon fonctionnement de PowerShell.
07

Test de l'installation du fournisseur NuGet

Testez maintenant si le fournisseur NuGet fonctionne correctement en essayant d'installer un module commun. Cela vérifie que tous les composants fonctionnent correctement.

Testez d'abord avec un module léger :

Install-Module PSReadLine -Force -AllowClobber

Si cela réussit, testez avec un module plus complexe comme Exchange Online Management :

Install-Module ExchangeOnlineManagement -Force

Vérifiez l'état du fournisseur NuGet :

Get-PackageProvider -Name NuGet

Vous devriez voir la version 2.8.5.201 ou plus récente. Le fournisseur devrait apparaître comme "Installé" sans erreurs.

Vérification : Listez tous les fournisseurs de packages disponibles pour confirmer que NuGet est correctement enregistré :

Get-PackageProvider -ListAvailable

Vous devriez voir NuGet, PowerShellGet et d'autres fournisseurs listés sans erreurs.

Erreur courante : Si vous rencontrez encore des erreurs du fournisseur NuGet, redémarrez complètement votre session PowerShell. Les mises à jour de modules nécessitent souvent une nouvelle session pour prendre effet correctement.
08

Configurer pour les utilisateurs non-administrateurs

Si vous avez besoin d'installer des modules uniquement pour l'utilisateur actuel (sans privilèges administratifs), configurez le fournisseur NuGet pour les installations à portée utilisateur.

Pour les scénarios non-administrateur, utilisez la portée CurrentUser :

Install-PackageProvider -Name NuGet -Force -Scope CurrentUser
Install-Module PowerShellGet -Force -Scope CurrentUser -AllowClobber

Définissez PowerShell Gallery comme de confiance pour l'utilisateur actuel :

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

Testez l'installation de module à portée utilisateur :

Install-Module Az.Accounts -Scope CurrentUser -Force

Vérification : Vérifiez que les modules s'installent dans le profil utilisateur :

Get-Module Az.Accounts -ListAvailable | Select-Object ModuleBase

Le chemin devrait montrer Documents\WindowsPowerShell\Modules ou Documents\PowerShell\Modules pour les installations à portée utilisateur.

Vérifiez le chemin des modules spécifiques à l'utilisateur :

$env:PSModulePath -split ';' | Where-Object { $_ -like "*$env:USERNAME*" }
Astuce pro : Les installations à portée utilisateur sont parfaites pour les environnements de développement ou lorsque vous n'avez pas accès en tant qu'administrateur. Elles n'affectent pas les configurations PowerShell à l'échelle du système.
09

Dépanner les problèmes de connexion persistants

Si vous rencontrez toujours des problèmes de connexion après la mise à jour des modules, adressez-vous aux problèmes au niveau du réseau qui peuvent empêcher les téléchargements du fournisseur NuGet.

Testez la connectivité à PowerShell Gallery :

Test-NetConnection -ComputerName www.powershellgallery.com -Port 443

Si vous êtes derrière un pare-feu ou un proxy d'entreprise, configurez PowerShell pour utiliser vos paramètres de proxy :

# Définir le proxy pour la session en cours
$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
[System.Net.WebRequest]::DefaultWebProxy = $proxy

Pour les problèmes de proxy persistants, configurez les paramètres de proxy WinHTTP :

netsh winhttp set proxy proxy-server:port

Testez la résolution DNS pour PowerShell Gallery :

Resolve-DnsName www.powershellgallery.com

Si vous utilisez Windows Server 2016, assurez-vous que TLS 1.2 est activé à l'échelle du système via le registre :

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value 1 -Type DWord
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value 1 -Type DWord

Vérification : Après avoir apporté des modifications au registre, redémarrez PowerShell et testez le protocole TLS :

[Net.ServicePointManager]::SecurityProtocol

Vous devriez voir Tls12 disponible dans la liste des protocoles.

Avertissement : Les modifications du registre pour TLS nécessitent un redémarrage du système pour prendre pleinement effet. Planifiez en conséquence dans les environnements de production.

Questions Fréquentes

Pourquoi PowerShell dit-il que le fournisseur NuGet est requis mais ne l'installe pas ?+
Cette dépendance circulaire se produit parce que PowerShell a besoin de NuGet pour télécharger NuGet, mais la version bootstrap (2.8.5.208) échoue souvent en raison de problèmes de protocole TLS. La solution consiste à activer d'abord TLS 1.2 avec [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12, puis à mettre à jour PowerShellGet qui inclut un fournisseur NuGet fonctionnel. Ne tentez jamais d'installer le fournisseur NuGet directement après la mise à jour des modules.
Quelle est la différence entre les modules PackageManagement et PowerShellGet ?+
PackageManagement est le cadre sous-jacent qui gère les fournisseurs de packages comme NuGet, tandis que PowerShellGet est le module spécifique pour interagir avec PowerShell Gallery. PackageManagement 1.0.0.1 est livré avec Windows mais ne prend pas en charge TLS moderne. PowerShellGet 2.x inclut un PackageManagement mis à jour avec un support approprié du fournisseur NuGet. Mettez toujours à jour PowerShellGet en premier, ce qui met automatiquement à jour les dépendances de PackageManagement.
Comment activer définitivement TLS 1.2 pour PowerShell sur Windows Server 2016 ?+
Windows Server 2016 n'active pas TLS 1.2 par défaut. Pour une activation permanente à l'échelle du système, modifiez les clés de registre : Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value 1. Ajoutez également [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 à votre profil PowerShell ($PROFILE) pour une activation au niveau de la session. Les modifications du registre nécessitent un redémarrage du système pour prendre pleinement effet.
Puis-je installer le fournisseur NuGet sans privilèges administrateur ?+
Oui, utilisez la portée CurrentUser : Install-PackageProvider -Name NuGet -Force -Scope CurrentUser, suivi de Install-Module PowerShellGet -Force -Scope CurrentUser -AllowClobber. Cela installe les modules dans votre profil utilisateur (~\Documents\WindowsPowerShell\Modules) au lieu des répertoires système. Les installations à portée utilisateur ne nécessitent pas de droits d'administrateur mais ne fonctionnent que pour le compte utilisateur actuel.
Que dois-je faire si le proxy d'entreprise bloque l'accès à PowerShell Gallery ?+
Configurez PowerShell pour utiliser votre proxy d'entreprise avec les paramètres [System.Net.WebRequest]::DefaultWebProxy et assurez-vous que les identifiants sont correctement définis. Testez la connectivité avec Test-NetConnection -ComputerName www.powershellgallery.com -Port 443. Pour des problèmes persistants, configurez le proxy WinHTTP avec les commandes netsh winhttp set proxy. Certaines organisations nécessitent des téléchargements manuels de modules depuis l'onglet 'Téléchargement manuel' de PowerShell Gallery, puis une installation manuelle dans les répertoires de modules.

Discussion

Partagez vos réflexions et analyses

Connectez-vous pour participer