Accesso alla copia negato in PowerShell: 8 correzioni testate

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

  1. Premere Win+ Eper avviare Esplora file .
  2. Vai alla cartella che vuoi modificare.
  3. Fare clic con il tasto destro del mouse sulla cartella e selezionare Proprietà .
  4. Fare clic sulla scheda Sicurezza .
  5. Fare clic sul pulsante Modifica per modificare le autorizzazioni.
  6. Assicurati che il tuo account utente o l’account che esegue lo script di PowerShell disponga delle autorizzazioni di Controllo completo.
  7. 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

  1. Aprire la finestra di dialogo Esegui premendo Win+ R, digitare fsmgmt.msc e premere Enter.
  2. Passare alla cartella condivisa.
  3. Fare clic con il tasto destro del mouse sulla cartella e selezionare Proprietà .
  4. Fare clic sulla scheda Autorizzazioni di condivisione .
  5. Assicurarsi che l’utente o il gruppo che esegue lo script di PowerShell disponga delle autorizzazioni di controllo completo.
  6. 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

  1. Fare clic sul pulsante Start .
  2. Digitare PowerShell nella barra di ricerca.
  3. Fare clic con il pulsante destro del mouse su Windows PowerShell e selezionare Esegui come amministratore .
  4. 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

  1. Crea una nuova unità PowerShell per il percorso di rete utilizzando New-PSDrive:New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
  2. 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

  1. 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
  2. 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

  1. Sulla macchina remota, eseguire:Enable-PSRemoting -Force
  2. Assicurarsi che l’utente abbia l’autorizzazione per eseguire script sulla macchina remota:Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
  3. 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)

  1. 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 }
  2. 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

  1. Precopiare i file necessari sul computer remoto:Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
  2. 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

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *