2011-10-12 108 views
29

我是PowerShell的新手。当试图编写一个简单的脚本来删除一个文件夹的内容,然后用从不同文件夹复制的文件填充它时,我总是会得到一个PermissionDenied错误。PowerShell中的权限错误

详情:

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

问题出在哪里?我可以通过资源管理器操作这两个文件夹。 从脚本文件和shell运行时(使用Windows PowerShell ISE)都会发生此错误。 ISE进程在我的帐户下运行。 我正在运行Windows 7 Professional,并且是本地管理员。

编辑: 理查德的建议后,我尝试了详细模式(这似乎没有效果)。

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} 

我没有看到任何有用的东西(但谢谢你的提示)。

编辑2: 好了,这里的脚本源:

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

就是这样。删除项似乎扔在每个文件。

+0

您是否确实有权删除错误中记录的文件** save.gif **和** file.txt **? –

+0

是的,当控制台无法工作时,我所做的第一件事就是试图手动删除它们。 (我也在开场白中说过,但也许我有点含糊,对不起) – ver

+0

你能提供脚本吗? – JPBlanc

回答

9

是否启用UAC?如果是这样,请尝试以“管理员”身份运行PowerShell会话。它看起来像你没有删除对象的权限。

我的工作环境非常严格,对UAC不熟悉的用户一直在烧。

1

此错误后(并在它那点最近的错误假设):

$error[0] | fl * -force 

将扩大错误和异常的详细信息。这应该给你更多的信息。

另一件事要做的就是打开详细日志记录

$VerbosePreference = "Continue" 

以获得有关具体的详细信息发生错误时正在执行什么操作。

最后,PowerShell ISE包含一个调试器,它允许您逐步执行脚本。

99

你有没有尝试:

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

+1因为(误导性)甚至具有适当的访问权限,如果*只读文件*存在于被删除的目录中,则会抛出PermissionDenied错误,除非指定了Force。 – piers7

+4

+1。它也适用于我。错误信息有误导性。 :-) –

+0

+1。感谢JPBlanc的答复,并感谢澄清@ piers7 – Riscie

2

除了上述文章中提到的原因,我发现当文件被一个单独的进程访问时引发“访问被拒绝”错误(在我的情况下,我必须在重命名之前停止服务器 - 项目可以成功运行)。