Können PowerShell-trap Fehler in GetChildItem und weiter looping?
Habe ich ein PowerShell-Skript, das recursing nach unten durch die Datei system mit GetChildItem in einer for-Schleife. Wie es reist, es ist die Befestigung von ACL-Probleme, die es findet (meist, wo jemand blockiert hat, wird das Konto VORDEFINIERT\Administratoren)... aber es gibt einige, die es nicht umgehen kann, auf seine eigene, wie wenn ich [System.UnauthorizedAccessException] wenn es eine explizite "Verweigern" ass.
Die Codezeile sieht wie folgt aus:
foreach($file in Get-ChildItem $dirRoot -Recurse -ErrorAction Continue) {
...
}
Wenn es stolpert auf einem Pfad kann es nicht Lesen, es gibt diese Ausnahme:
Get-ChildItem : der Zugriff auf den Pfad 'C:\TEMP\denied' verweigert. Bei
Fix-ACLs.ps1:52 char:31
+ foreach($file in "Get-ChildItem" <<<< $dirRoot -Recurse -ErrorAction
"Weiter") {
+ CategoryInfo : PermissionDenied:
(C:\TEMP\denied:String) [Get-ChildItem], Autorisierte AccessException
+ FullyQualifiedErrorId :
DirUnauthorizedAccessError,Microsoft.PowerShell.Befehle.GetChildItemCommand
Möchte ich ein try/catch oder den Fehler abfangen, so dass ich kann die Reparatur des ACL (das ist, entfernen Sie die "Deny") in-place, und--am wichtigsten--continue die Schleife ohne meinen Platz. Irgendwelche Vorschläge für mich?
- Geben Sie einige code, den Sie verwenden
Du musst angemeldet sein, um einen Kommentar abzugeben.
haben Sie silentlycontinue?
trap
undtry/catch
arbeiten im Allgemeinen auf "Stop" - Fehler, ist die beste option, die ich bisher gefunden habe, ist die Verwendung der-ErrorAction SilentlyContinue
wie Sie vorgeschlagen, und dann in der ersten Zeile der code-block schauen, wenn wir nur einen Fehler mitif ($error) {...
.Wie etwa Fragen?
Vielleicht eröffnen eine zweite PS-Fenster, um den Fehler zu beheben, dann weiter den Befehl in das erste PS-Fenster, indem Sie Y, um fortzufahren.
Können Sie auch ErrorVariable
Get-Variable a oder $a wird Ihnen zeigen, all die Fehler, die von der Befehl. Sie können auch +Variablenname (+a), um Fehler, um eine vorhandene variable.