Peut PowerShell intercepter les erreurs dans GetChildItem et continuer la boucle?

J'ai un script PowerShell qui est recursing vers le bas à travers le système de fichiers à l'aide de GetChildItem dans une boucle for. Comme il se déplace, c'est la fixation de l'ACL de questions qu'il trouve (surtout lorsque quelqu'un a bloqué le compte BUILTIN\Administrateurs)... mais il y a certains il ne peut pas gérer tout seul, comme quand j'ai [Système.UnauthorizedAccessException] si il y a un explicite "Refuser" ACE.

La ligne de code ressemble à ceci:

foreach($file in Get-ChildItem $dirRoot -Recurse -ErrorAction Continue) {
    ...
}

Quand il bute sur un chemin qu'il ne peut pas lire, il donne à cette exception:

Get-ChildItem : le chemin d'Accès "C:\TEMP\denied" est refusé. Au
Fix-Acl.ps1:52 char:31
+ foreach($fichier à Get-ChildItem <<<< $dirRoot -Recurse -ErrorAction
Continuer) {
+ CategoryInfo : PermissionDenied:
(C:\TEMP\denied:String) [Get-ChildItem], Non Autorisée AccessException
+ FullyQualifiedErrorId :
DirUnauthorizedAccessError,Microsoft.PowerShell.Commandes.GetChildItemCommand

Je voudrais try/catch ou interruption de l'erreur afin que je puisse réparer les ACL (qui est, de supprimer le "Refuser") en place, et-plus important-continuer la boucle sans perdre ma place. Des suggestions pour moi?

Donner un peu de code que vous utilisez

OriginalL'auteur ewall | 2011-08-04