Accès au fichier cloud est refusé avec Uninstall-Module

Une incohérence entre OneDrive et PowerShell

Lors de la désinstallation d’un module PowerShell avec la commande Uninstall-Module il peut arriver l’erreur suivant:

PackageManagement\Uninstall-Package : L’accès au fichier cloud est refusé Au caractère C:\Users\xxxxx\OneDrive – YYYY\Documents\WindowsPowerShell\Modules\PowerShellGet\2.1.5\PSModule.psm1:12451 : 21 + … $null = PackageManagement\Uninstall-Package @PSBoundParameters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (Microsoft.Power…ninstallPackage:UninstallPackage) [Uninstall-Package], Exception + FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.RemoveItemCommand,Microsoft.PowerShell.PackageManagement.Cmdlets.UninstallPackage

Ce problème se produit si le module à désinstaller est présent dans c:\users\<user>\Documents\WindowsPowerShell\Modules.

Dans certains cas, ce dossier est synchronisé avec OneDrive (par exemple avec Known Folder Move). Le fait que ce dossier soit dans OneDrive pose problème si la fonctionnalité OneDrive Files-On-Demand (fichiers à la demande) est activée.

Certains articles indiquent de désactiver Files-On-Demand pour corriger le problème. C’est une solution mais vous risquez d’avoir une expérience OneDrive déplorable et une utilisation de votre espace disque trop important.

Il est donc préférable d’utiliser un lien symbolique de Windows comme le montre la suite de l’article.

Ne pas synchroniser le dossier WindowsPowerShell

La solution est de sortir le dossier WindowsPowerShell de la synchronisation OneDrive tout en le conservant dans c:\users\username\Documents\

Le problème c’est que les paramètres OneDrive ne permettent pas cela, ils permettent seulement de pas synchroniser un dossier depuis le cloud vers le PC, or notre souhait est de ne pas synchroniser depuis notre PC vers le cloud.

Pour cela, une méthode consiste à utiliser un lien symbolique.

  • Déplacer votre dossier WindowsPowerShell dans un dossier non synchronisé par OneDrive. Dans cet article, le dossier est déplacé dans C:\users\username (variable %userprofile%)/
  • Ouvrir une CMD en mode administrateur avec la commande suivante (cette commande utilise les variables d’environnements uniquement accessibles en CMD)
mklink /d "%OneDriveCommercial%\Documents\WindowsPowerShell" "%UserProfile%\WindowsPowerShell"

Le dossier WindowsPowerShell restera avec l’icône de synchronisation car OneDrive ne peut pas synchronisée un lien symbolique. Cependant cela n’est pas gênant. L’icône OneDrive (^à côté de l’heure) sera elle fonctionnelle sans afficher ce sybmole de synchronisation

Leave a Reply

Close Menu