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\username\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 d'exclure 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
