我有一個PowerShell腳本,通過使用GetChildItem在for循環中遞歸通過文件系統。當它傳播時,它正在修復它發現的ACL問題(主要是在某人阻止了BUILTIN \ Administrators帳戶的地方)......但是有一些它自己無法處理,就像當我得到[System.UnauthorizedAccessException]時如果存在是一個明確的「拒絕」ACE。PowerShell可以在GetChildItem中捕獲錯誤並繼續循環?
的代碼行看起來是這樣的:
foreach($file in Get-ChildItem $dirRoot -Recurse -ErrorAction Continue) {
...
}
當絆倒它無法讀取路徑上,它給出了這樣的例外:
GET-ChildItem:對路徑的訪問'C:\ TEMP \ denied'被拒絕。在 修復-ACLs.ps1:52字符:31 +的foreach(在GET-ChildItem < < < < $ dirRoot -Recurse -ErrorAction 繼續$文件){ + CategoryInfo:PermissionDenied: (C:\ TEMP \否認:字符串)[獲取-ChildItem],未經授權AccessException + FullyQualifiedErrorId: DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
我想嘗試/捕獲或捕獲錯誤,這樣我可以修復的ACL(即刪除「拒絕」),並且 - 最重要的是 - 繼續循環而不會丟失我的位置即對我有何建議?
給出一些你正在使用的代碼 – manojlds