2011-10-12 18 views
29

Soy nuevo en PowerShell. Cuando intento escribir un script simple que elimina el contenido de una carpeta y luego lo llena con archivos copiados de una carpeta diferente, siempre aparece un error PermissionDenied.Errores de permiso en PowerShell

Detalles:

+ remove-item <<<< D:\path\* -recurse 
    + CategoryInfo : PermissionDenied: (save.gif:FileInfo) [Remove-Item], IOException 
    + FullyQualifiedErrorId : RemoveFileSystemItemUnAuthorizedAccess,Microsoft.PowerShell.Commands.RemoveItemCommand 

¿Dónde está el problema? Puedo manipular ambas carpetas a través de Explorer. El error ocurre tanto al ejecutar desde un archivo de script como desde el shell (usando Windows PowerShell ISE). El proceso ISE se ejecuta bajo mi cuenta. Estoy ejecutando Windows 7 Professional y soy un administrador local.

Editar: Después de la sugerencia de Richard, probé el modo detallado (que parecía no tener ningún efecto).

PS Z:\> $error[0] | fl * -force 

PSMessageDetails  : 
Exception    : System.IO.IOException: Not Enough permission to perform operation. 
TargetObject   : D:\path\file.txt 
CategoryInfo   : PermissionDenied: (D:\path\file.txt:FileInfo) [Remove-Item], IOException 
FullyQualifiedErrorId : RemoveFileSystemItemUnAuthorizedAccess,Microsoft.PowerShell.Commands.RemoveItemCommand 
ErrorDetails   : Cannot remove item D:\path\file.txt: Not Enough permission to perform operation. 
InvocationInfo  : System.Management.Automation.InvocationInfo 
PipelineIterationInfo : {0, 1} 

No veo nada de mucha utilidad allí (pero gracias por las sugerencias de todos modos).

Edición 2: Bueno, aquí está la fuente de la escritura:

remove-item D:\path_A\* -recurse 
copy-item D:\path_B\* D:\path_A\ 

Eso es todo. El elemento remove parece lanzar en cada archivo.

+0

¿De verdad tiene permisos para eliminar los archivos ** save.gif ** y ** file.txt ** como se documenta en los errores? –

+0

Sí, cuando la consola no funcionaba, lo primero que hacía era tratar de eliminarlos manualmente. (También dije esto en el primer post, pero tal vez era un poco vago. Lo siento). – ver

+0

¿Puedes proporcionar el script en sí? – JPBlanc

Respuesta

9

UAC está habilitado? Si es así, intente ejecutar su sesión de PowerShell como 'Administrador'. Realmente parece que no tienes permiso para eliminar los objetos.

Tenemos políticas de seguridad muy restrictivas donde trabajo y los usuarios que no están familiarizados con UAC se queman todo el tiempo.

1

Después de este error (y suponiendo que en ese punto en que el error más reciente):

$error[0] | fl * -force 

ampliará los detalles del error y excepción. Eso debería darte más información.

Otra cosa que hacer es cambiar el registro detallado

$VerbosePreference = "Continue" 

para obtener más detalles sobre la operación específicamente lo que se está realizando cuando se produce el error.

Finalmente PowerShell ISE incluye un depurador que le permite recorrer su secuencia de comandos.

99

que ensaye:

remove-item D:\path_A\* -recurse -force 
+39

+1 porque (engañosamente) incluso con el acceso apropiado, los errores de PermisoDetenidos se lanzan si * existen archivos de solo lectura * dentro del directorio que se está eliminando, a menos que se especifique Force. – piers7

+4

+1. Funcionó para mí también. El mensaje de error es engañoso. :-) –

+0

+1. Gracias por la respuesta JPBlanc y gracias por la aclaración @ piers7 – Riscie

2

Además de los motivos mencionados en las publicaciones anteriores, he observado que se produce un error de "Acceso denegado" cuando se accede al archivo mediante un proceso separado (en mi caso, tuve que detener el servidor antes de Rename- El artículo se puede ejecutar con éxito).

Cuestiones relacionadas