我有一個腳本,我遞歸刪除某些目錄中的一些文件。問題在於該目錄的規範。Get-Childitem目錄通配符「訪問被拒絕」
當我嘗試顯式指定它(即只清除user1的目錄),它工作正常:
$temp = "C:\Users\user1\AppData\Local\Temp\"
Get-ChildItem $temp -Recurse -Force -Verbose -ErrorAction SilentlyContinue | remove-item -force -Verbose -recurse -ErrorVariable FailedItems -ErrorAction SilentlyContinue
然而,當我用通配符指定它(即影響這臺電腦上的所有用戶)
$temp = "C:\Users\*\AppData\Local\Temp\*"
Get-ChildItem $temp -Recurse -Force -Verbose -ErrorAction SilentlyContinue | remove-item -force -Verbose -recurse -ErrorVariable FailedItems -ErrorAction SilentlyContinue
它失敗,出現錯誤
Get-ChildItem : Access is denied
At line:7 char:1
+ Get-ChildItem $localTempDir -Recurse -Force -Verbose -ErrorAction Sil ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand
這怎麼可能? 這絕對不是權限問題,因爲它的相同目錄。 是的,我用提升的權限運行腳本。
以這種格式指定的其他目錄,例如
C:\Users\*\AppData\Local\Microsoft\Windows\Caches
C:\Windows\Temp\*
被清除爲魅力。
喜,這不能與特殊/隱藏/系統配置文件夾相關嗎?例如'默認' – sodawillow
也許吧。如何診斷? – Suncatcher
枚舉配置文件,排除特殊配置文件,應用其餘的邏輯? – sodawillow