Accesso alla copia negato in PowerShell: 8 correzioni testate
Incontrare l’errore Copy-Item Access is Denied in PowerShell è sconcertante, poiché è possibile eseguire il processo in File Explorer senza problemi. Ciò è dovuto alla mancanza di permessi NTFS durante la scrittura su una condivisione di rete, ma le soluzioni di seguito risolveranno il problema in pochissimo tempo.
Come posso correggere l’errore “Copy-Item Access is Denied” in PowerShell?
1. Assicurarsi che le autorizzazioni NTFS siano corrette
- Premere Win+ Eper avviare Esplora file .
- Vai alla cartella che vuoi modificare.
- Fare clic con il tasto destro del mouse sulla cartella e selezionare Proprietà .
- Fare clic sulla scheda Sicurezza .
- Fare clic sul pulsante Modifica per modificare le autorizzazioni.
- Assicurati che il tuo account utente o l’account che esegue lo script di PowerShell disponga delle autorizzazioni di Controllo completo.
- Fare clic su Applica e poi su OK per salvare le modifiche.
Assicurandosi che le autorizzazioni NTFS siano corrette, lo script può scrivere nella cartella, risolvendo così i problemi di accesso.
2. Verificare le autorizzazioni di condivisione
- Aprire la finestra di dialogo Esegui premendo Win+ R, digitare fsmgmt.msc e premere Enter.
- Passare alla cartella condivisa.
- Fare clic con il tasto destro del mouse sulla cartella e selezionare Proprietà .
- Fare clic sulla scheda Autorizzazioni di condivisione .
- Assicurarsi che l’utente o il gruppo che esegue lo script di PowerShell disponga delle autorizzazioni di controllo completo.
- Fare clic su Applica e poi su OK.
Per una corretta copia dei file, sia le autorizzazioni NTFS che quelle di condivisione devono consentire l’accesso in scrittura.
3. Esegui PowerShell come amministratore
- Fare clic sul pulsante Start .
- Digitare PowerShell nella barra di ricerca.
- Fare clic con il pulsante destro del mouse su Windows PowerShell e selezionare Esegui come amministratore .
- Esegui nuovamente lo script Copy-Item.
L’esecuzione di PowerShell come amministratore garantisce l’accesso completo alle cartelle di sistema protette e alle condivisioni di rete.
4. Utilizzare percorsi UNC senza credenziali
- Crea una nuova unità PowerShell per il percorso di rete utilizzando New-PSDrive:
New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
- Utilizzare la nuova lettera di unità per eseguire Copy-Item (modificare di conseguenza i percorsi di origine e destinazione):
Copy-Item "P:\source\file"-Destination "P:\destination\path"
L’utilizzo di percorsi UNC e la mappatura di un’unità di rete consentono di evitare problemi relativi alle credenziali con i percorsi di rete.
5. Modificare le variabili di ambiente in PowerShell
- Sostituisci le variabili di ambiente con la sintassi di PowerShell:
Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
- In alternativa, utilizzare direttamente la variabile d’ambiente APPDATA:
Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force
Il corretto riferimento alle variabili di ambiente in PowerShell garantisce che i percorsi vengano risolti correttamente.
6. Abilitare la comunicazione remota di PowerShell
- Sulla macchina remota, eseguire:
Enable-PSRemoting -Force
- Assicurarsi che l’utente abbia l’autorizzazione per eseguire script sulla macchina remota:
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
- Utilizzare il parametro ToSession per la copia remota:
$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
Abilitando la comunicazione remota di PowerShell e utilizzando i parametri di sessione corretti, le operazioni sui file remoti risultano più fluide.
7. Risolvere i problemi relativi al Controllo dell’account utente (UAC)
- Creare uno script di PowerShell per elevare le autorizzazioni:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell -Verb runAs -ArgumentList $MyInvocation.MyCommand.Definition Break }
- Eseguire il comando Copy-Item all’interno della sessione elevata:
Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force
L’aumento delle autorizzazioni all’interno dello script aggira le restrizioni UAC.
8. Gestire il problema del doppio salto
- Precopiare i file necessari sul computer remoto:
Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
- Utilizzare Invoke-Command per eseguire l’installazione sul computer remoto:
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 copia preventiva dei file e l’utilizzo di percorsi diretti prevengono i problemi legati a più connessioni remote.
Seguendo queste soluzioni dovresti riuscire a risolvere l’errore Copy-Item: Access is deny in PowerShell.
Per qualsiasi suggerimento o domanda, scrivete nella sezione commenti qui sotto.
Lascia un commento