L’accès à la copie d’éléments est refusé dans PowerShell : 8 correctifs testés
L’erreur « Copy-Item Access is Denied » dans PowerShell est déconcertante, car vous pouvez exécuter le processus dans l’Explorateur de fichiers sans problème. Cela est dû au manque d’autorisations NTFS lors de l’écriture sur un partage réseau, mais les solutions ci-dessous résoudront le problème en un rien de temps.
Comment corriger l’erreur « L’accès à la copie d’élément est refusé » dans PowerShell ?
1. Assurez-vous que les autorisations NTFS sont correctes
- Appuyez sur Win+ Epour démarrer l’explorateur de fichiers .
- Accédez au dossier que vous souhaitez modifier.
- Faites un clic droit sur le dossier et sélectionnez Propriétés .
- Cliquez sur l’ onglet Sécurité .
- Cliquez sur le bouton Modifier pour modifier les autorisations.
- Assurez-vous que votre compte utilisateur ou le compte exécutant le script PowerShell dispose des autorisations de contrôle total.
- Cliquez sur Appliquer puis sur OK pour enregistrer les modifications.
La garantie de permissions NTFS appropriées permet au script d’écrire dans le dossier, résolvant ainsi les problèmes d’accès.
2. Vérifiez les autorisations de partage
- Ouvrez la boîte de dialogue Exécuter en appuyant sur Win+ R, tapez fsmgmt.msc et appuyez sur Enter.
- Accédez au dossier partagé.
- Faites un clic droit sur le dossier et sélectionnez Propriétés .
- Cliquez sur l’ onglet Autorisations de partage .
- Assurez-vous que l’utilisateur ou le groupe exécutant le script PowerShell dispose des autorisations de contrôle total.
- Cliquez sur Appliquer puis sur OK.
Les autorisations NTFS et Share doivent autoriser l’accès en écriture pour une copie de fichier réussie.
3. Exécutez PowerShell en tant qu’administrateur
- Cliquez sur le bouton Démarrer .
- Tapez PowerShell dans la barre de recherche.
- Cliquez avec le bouton droit sur Windows PowerShell et sélectionnez Exécuter en tant qu’administrateur .
- Exécutez à nouveau votre script Copy-Item.
L’exécution de PowerShell en tant qu’administrateur garantit un accès complet aux dossiers système protégés et aux partages réseau.
4. Utilisez des chemins UNC sans informations d’identification
- Créez un nouveau lecteur PowerShell pour l’emplacement réseau à l’aide de New-PSDrive :
New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
- Utilisez la nouvelle lettre de lecteur pour exécuter Copy-Item (modifiez les chemins source et de destination en conséquence) :
Copy-Item "P:\source\file"-Destination "P:\destination\path"
L’utilisation de chemins UNC et le mappage d’un lecteur réseau permettent d’éviter les problèmes liés aux informations d’identification avec les chemins réseau.
5. Modifier les variables d’environnement dans PowerShell
- Remplacez les variables d’environnement par la syntaxe PowerShell :
Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
- Vous pouvez également utiliser directement la variable d’environnement APPDATA :
Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force
Le référencement correct des variables d’environnement dans PowerShell garantit que les chemins sont résolus correctement.
6. Activer la communication à distance PowerShell
- Sur la machine distante, exécutez :
Enable-PSRemoting -Force
- Assurez-vous que l’utilisateur dispose de l’autorisation d’exécuter des scripts sur la machine distante :
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
- Utilisez le paramètre ToSession pour la copie à distance :
$session = New-PSSession -ComputerName "remote_machine"-Credential "username"$source = "C:\path\to\source"$dest = "C:\path\to\destination"Copy-Item -Path $source -Destination $dest -ToSession $session -Recurse -Force
L’activation de la communication à distance PowerShell et l’utilisation des paramètres de session corrects rendent les opérations de fichiers distants plus fluides.
7. Résoudre les problèmes de contrôle de compte d’utilisateur (UAC)
- Créez un script PowerShell pour élever les autorisations :
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell -Verb runAs -ArgumentList $MyInvocation.MyCommand.Definition Break }
- Exécutez la commande Copy-Item dans la session avec privilèges élevés :
Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force
L’élévation des autorisations dans le script contourne les restrictions UAC.
8. Gérer le problème du double saut
- Pré-copiez les fichiers nécessaires sur la machine distante :
Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
- Utilisez Invoke-Command pour exécuter l’installation sur la machine distante :
Invoke-Command -ComputerName "remote_machine"-ScriptBlock { Copy-Item -Path "\\remote_machine\path\file"-Destination "C:\Windows\Temp"-Force Start-Process msiexec -ArgumentList "/i C:\Windows\Temp\installer.msi /quiet"-Wait }
La pré-copie des fichiers et l’utilisation de chemins directs évitent les problèmes liés à plusieurs connexions à distance.
En suivant ces solutions, vous devriez être en mesure de résoudre l’erreur Copy-Item : l’accès est refusé dans PowerShell.
Pour toute suggestion ou question, cliquez sur la section commentaires ci-dessous pour les écrire.
Laisser un commentaire