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\
.
Les paramètres OneDrive ne permettent pas directement cette exclusion. 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é dansC:\users\username
(variable%userprofile%
).
2. 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"
Notez que l'icône de synchronisation demeurera sur le dossier WindowsPowerShell
car OneDrive ne synchronise pas les liens symboliques. Toutefois, ce n'est pas un souci. L'icône OneDrive (près de l'horloge) restera opérationnelle sans montrer ce signe de synchronisation.
Clap
Comments