Mam skrypt PowerShell, który jest recursing down przez system plików przy użyciu GetChildItem w pętli for. W trakcie podróży naprawia wykryte problemy ACL (głównie tam, gdzie ktoś zablokował konto BUILTIN \ Administrators) ... ale niektóre z nich nie radzą sobie samodzielnie, np. Kiedy dostaję [System.UnauthorizedAccessException], jeśli istnieje jest wyraźną "odmową" ACE.Czy PowerShell może przechwytywać błędy w GetChildItem i kontynuować tworzenie pętli?
Linia kodu wygląda następująco:
foreach($file in Get-ChildItem $dirRoot -Recurse -ErrorAction Continue) {
...
}
Gdy natrafia na ścieżce nie można odczytać, to daje ten wyjątek:
Get-ChildItem: Wstęp na ścieżce Odmówiono "C: \ TEMP \ denied". Na Fix-ACLs.ps1: 52 char: 31 + foreach ($ plik w Get-ChildItem < < < < $ dirRoot -recurse -ErrorAction dalej) { + CategoryInfo: PermissionDenied: (C: \ temp \ odmawia : String) [Get-ChildItem] Nieuprawnione AccessException + FullyQualifiedErrorId: DirUnauthorizedAccessError, Microsoft.PowerShell.Commands.GetChildItemCommand
chciałbym try/catch lub wyłapania błędów tak, że mogę naprawić ACL (to znaczy, usuń "Deny") w miejscu i - co najważniejsze - kontynuuj pętlę bez utraty mojego miejsca mi. Jakieś sugestie dla mnie?
Daj jakiś kod, którego używasz – manojlds