Ich verwende PowerShell 5.0 und arbeite an einem Skript, um alle Versionen von log4net.dll im aktuellen Verzeichnis rekursiv zu finden und aufzulisten.Wie vermeidet man eine UnathorizedAccessException bei Verwendung von Get-ChildItem?
Get-ChildItem log4net.dll -Recurse | % versioninfo | Export-Csv "C:\MyJunk\log4net.csv"
Die obige Aussage beginnt als Rückkehr Versionsinformationen erwartet, aber die Ausführung stoppt beim ersten Ordner I Zugriffsberechtigung fehlt:
Get-ChildItem : The specified network name is no longer available.
At line:1 char:1
+ Get-ChildItem log4net.dll -Recurse | % versioninfo | Export-Csv "C:\M ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (J:\ArcPlan_OracleWallet\Production:String) [Get-ChildItem], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
Get-ChildItem : Access is denied
At line:1 char:1
+ Get-ChildItem log4net.dll -Recurse | % versioninfo | Export-Csv "C:\M ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand
Ich bin mit Windows Powershell ISE als Adminstrator. ExecutionPolicy ist RemoteSigned und $ ErrorActionPreference ist Continue.
Idealerweise möchte ich, dass das Skript die ACL jedes Ordners abfragt und alle Ordner (und deren Inhalt) umgeht, auf die ich nicht zugreifen darf. Eine andere Lösung wäre eine, bei der hart codierte Ordner umgangen werden. Als Novize in PowerShell habe ich mich auf das Spätere konzentriert.
Ich habe versucht, den ersten Problemordner (namentlich) zu umgehen, um zu sehen, ob ich das zum Laufen bringen konnte, aber die gleiche Ausnahme und Verarbeitung stoppst.
Get-ChildItem log4net.dll -Recurse | Where-Object { $_.FullName -notmatch '\\ArcPlan_OracleWallet\\?'} | export-csv 'C:\MyJunk\log4net.csv'
Danke.
'Get-ChildItem -Recurse -ErrorAction SilentlyContinue'? –
@Ansgar. Danke für die Wiederholung. Ich bekomme immer noch die Ausnahme Zugriff verweigert. –
'Der angegebene Netzwerkname ist nicht mehr verfügbar 'ist diese Fehlermeldung falsch oder besteht wirklich ein Netzwerkproblem? Vielleicht stoppt deshalb die Skriptausführung? – sodawillow