Se deniega el acceso a elementos de copia en PowerShell: 8 soluciones probadas
Encontrarse con el error «Se deniega el acceso a elementos de copia» en PowerShell es desconcertante, ya que se puede realizar el proceso en el Explorador de archivos sin problemas. Esto se debe a la falta de permisos NTFS al escribir en un recurso compartido de red, pero las soluciones a continuación solucionarán el problema en poco tiempo.
¿Cómo soluciono el error «Acceso denegado a copia de elemento» en PowerShell?
1. Asegúrese de que los permisos NTFS sean correctos
- Presione Win+ Epara iniciar el Explorador de archivos .
- Navegue hasta la carpeta que desea modificar.
- Haga clic derecho en la carpeta y seleccione Propiedades .
- Haga clic en la pestaña Seguridad .
- Haga clic en el botón Editar para cambiar los permisos.
- Asegúrese de que su cuenta de usuario o la cuenta que ejecuta el script de PowerShell tenga permisos de Control total.
- Haga clic en Aplicar y luego en Aceptar para guardar los cambios.
Garantizar los permisos NTFS adecuados permite que el script escriba en la carpeta, lo que resuelve los problemas de acceso.
2. Verificar los permisos para compartir
- Abra el cuadro de diálogo Ejecutar presionando Win+ R, escriba fsmgmt.msc y presione Enter.
- Navega a la carpeta compartida.
- Haga clic derecho en la carpeta y seleccione Propiedades .
- Haga clic en la pestaña Permisos para compartir .
- Asegúrese de que el usuario o grupo que ejecuta el script de PowerShell tenga permisos de Control total.
- Haga clic en Aplicar y luego en Aceptar.
Tanto los permisos NTFS como los de uso compartido deben permitir el acceso de escritura para poder copiar archivos correctamente.
3. Ejecute PowerShell como administrador
- Haga clic en el botón Inicio .
- Escriba PowerShell en la barra de búsqueda.
- Haga clic derecho en Windows PowerShell y seleccione Ejecutar como administrador .
- Ejecute nuevamente su script Copy-Item.
Ejecutar PowerShell como administrador garantiza acceso total a carpetas del sistema protegidas y recursos compartidos de red.
4. Utilice rutas UNC sin credenciales
- Cree una nueva unidad de PowerShell para la ubicación de red usando New-PSDrive:
New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
- Utilice la nueva letra de unidad para ejecutar Copy-Item (cambie las rutas de origen y destino según corresponda):
Copy-Item "P:\source\file"-Destination "P:\destination\path"
El uso de rutas UNC y el mapeo de una unidad de red ayudan a evitar problemas relacionados con las credenciales con las rutas de red.
5. Modificar variables de entorno en PowerShell
- Reemplace las variables de entorno con la sintaxis de PowerShell:
Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
- Alternativamente, utilice directamente la variable de entorno APPDATA:
Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force
Hacer referencia correcta a las variables de entorno en PowerShell garantiza que las rutas se resuelvan correctamente.
6. Habilitar la comunicación remota de PowerShell
- En la máquina remota, ejecute:
Enable-PSRemoting -Force
- Asegúrese de que el usuario tenga permiso para ejecutar scripts en la máquina remota:
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
- Utilice el parámetro ToSession para 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
Habilitar la comunicación remota de PowerShell y usar los parámetros de sesión correctos hace que las operaciones con archivos remotos sean más fluidas.
7. Abordar los problemas de Control de cuentas de usuario (UAC)
- Cree un script de PowerShell para elevar los permisos:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell -Verb runAs -ArgumentList $MyInvocation.MyCommand.Definition Break }
- Ejecute el comando Copy-Item dentro de la sesión elevada:
Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force
Elevar los permisos dentro del script elude las restricciones de UAC.
8. Abordar el problema del doble salto
- Copie previamente los archivos necesarios a la máquina remota:
Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
- Utilice Invoke-Command para ejecutar la instalación en la máquina remota:
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 }
Copiar previamente archivos y utilizar rutas directas evitan problemas relacionados con múltiples conexiones remotas.
Si sigue estas soluciones, debería poder resolver el error Copy-Item: Access is denied en PowerShell.
Para cualquier sugerencia o pregunta, haga clic en la sección de comentarios a continuación para escribirlas.
Deja una respuesta