2011-10-12 110 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

除了上述文章中提到的原因,我發現當文件被一個單獨的進程訪問時引發「訪問被拒絕」錯誤(在我的情況下,我必須在重命名之前停止服務器 - 項目可以成功運行)。