我是PowerShell的新手。当尝试编写一个删除文件夹内容的简单脚本,然后用从其他文件夹复制的文件填充它时,我总是遇到PermissionDenied
错误。
详细信息:
+ 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并且是本地管理员。
修改 在Richard的建议之后,我尝试了详细模式(似乎没有效果)。
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\
就是这样。 remove-item似乎抛出每个文件。
答案 0 :(得分:105)
你有没有尝试过:
remove-item D:\path_A\* -recurse -force
答案 1 :(得分:11)
是否启用了UAC?如果是这样,请尝试以“管理员”身份运行PowerShell会话。看起来你似乎没有删除对象的权限。
我工作的安全策略非常严格,不熟悉UAC的用户会一直被烧毁。
答案 2 :(得分:2)
除了上述帖子中提到的原因之外,我还观察到“拒绝访问”#34;当一个单独的进程访问该文件时抛出错误(在我的情况下,我必须在Rename-Item成功运行之前停止服务器。)
答案 3 :(得分:1)
在此错误之后(并在其中假设最近的错误):
$error[0] | fl * -force
将扩展错误和异常的细节。这应该会为您提供更多信息。
另一件事是打开详细记录
$VerbosePreference = "Continue"
获取有关错误发生时正在执行的操作的更多详细信息。
最后,PowerShell ISE包含一个调试器,可以让您逐步完成脚本。