Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Powershell Get-ChildItem Errorhandling ohne Stop

Mitglied: SeaStorm

SeaStorm (Level 2) - Jetzt verbinden

01.10.2019, aktualisiert 10:48 Uhr, 190 Aufrufe, 10 Kommentare

Hallo zusammen

ich bastle mir zZ ein kleines Script bei dem ich rekursiv durch alle Ordner eines Shares loope.
Jetzt habe ich das Problem, das hier Ordnerlängen > 255 Zeichen existieren.
Mache ich ein GCI, sagt dieses, das ein Ordner mit > 255 Zeichen nicht existieren würde.
Kein Problem, ignoriere ich diesen Ordner halt.
Dazu würde ich gerne einfach den Ordner Loggen und im Script weiter machen.

Jetzt das Problem:

Mein Script wäre
01.

02.
Get-ChildItem -path $path -Recurse -Directory -Force -ErrorAction Stop -Verbose -ErrorVariable err | 
03.
ForEach-Object {
04.
          #Tu Dinge
05.
            
06.
        }
07.
}catch [System.IO.DirectoryNotFoundException]{
08.
    Write-Host "Fehler..." -Foregroundcolor Red
09.
}
Hier catched er zwar korrekt den Fehler, Stoppt danach aber das Script.
Ich würde aber gerne den fehler catchen, loggen und danach weiter machen.
Mit Continue erhalte ich zwar eine Exception Meldung, aber diese landet nicht im Catch ...

Hat jemand eine Idee ?

Gruß Sea


(und: Es gab hier doch mal eine Powershell Sektion? Warum finde ich die nicht in der Auswahl?)
Mitglied: 141320
01.10.2019, aktualisiert um 11:11 Uhr
Kein Problem, ignoriere ich diesen Ordner halt.
Muss man nicht, einfach die entsprechende Syntax verwenden und schon gehen auch Pfade > 255
01.
gci "\\?\D:\longpath" -Recurse -Directory -Force
Bitte warten ..
Mitglied: SeaStorm
01.10.2019, aktualisiert um 11:20 Uhr
geht leider nicht, weil das share eine EMC mit eigenen Shares ist und keine Windows Büchse.
Aber unabhängig davon interessiert mich die Stop-Problematik selbst und wie ich das in PS lösen kann
Bitte warten ..
Mitglied: 141320
01.10.2019, aktualisiert um 11:20 Uhr
Aber unabhängig davon interessiert mich die Problematik selbst und wie ich das in PS lösen kann
So
01.
gci "D:\longpath" -Recurse -Dir -ErrorVariable err -EA Continue | %{
02.
   # do something
03.
}
04.

05.
if ($err){
06.
    write-host "Ordner mit Fehlern:" -F Yellow
07.
    $err.TargetObject
08.
}
Bitte warten ..
Mitglied: SeaStorm
01.10.2019, aktualisiert um 11:26 Uhr
Leider auch nicht

Das würde generell alle Fehler betreffen. Wenn ich aber z.B kein Zugriff wegen fehlender Berechtigung habe, dann schlägt das da auch auf.
Und in dem Script geht es explizit darum diese fehlenden Berechtigungen zu finden und zu korrigieren.

ich muss also wissen ob es ein DirectoryNotFound oder PermissionDenied ist
Bitte warten ..
Mitglied: 141320
LÖSUNG 01.10.2019, aktualisiert um 11:33 Uhr
Zitat von SeaStorm:

Leider auch nicht
Doch.
Das würde generell alle Fehler betreffen. Wenn ich aber z.B kein Zugriff wegen fehlender Berechtigung habe, dann schlägt das da auch auf.
Und in dem Script geht es explizit darum diese fehlenden Berechtigungen zu finden und zu korrigieren.

ich muss also wissen ob es ein DirectoryNotFound oder PermissionDenied ist
Das ist doch einfach $err enthält alle nötigen Properties.
Durchlaufe $err einfach mit einer Foreach-Schleife und prüfe die CategoryInfo.Reason
$err | gm *
01.
$err | ?{$_.CategoryInfo.Reason -eq 'UnauthorizedAccessException'} | select -Expand TargetObject
Bitte warten ..
Mitglied: SeaStorm
01.10.2019 um 11:32 Uhr
Woah... da hatte ich ja mal Tomaten auf den Augen. Ich hab irgendwie die ganze Zeit gedacht das ist ein String Array 🤦‍♂️

Vielen Dank!
Bitte warten ..
Mitglied: emeriks
01.10.2019, aktualisiert um 11:33 Uhr
Zitat von 141320:
Das ist doch einfach $err enthält alle nötigen Properties.
Durchlaufe $err einfach mit einer Foreach-Schleife und prüfe die CategoryInfo.Reason
$err | gm *
Ja, aber dann vor dem Get-ChildiItem nicht das $err.clear vergessen!
Bitte warten ..
Mitglied: 141320
01.10.2019, aktualisiert um 11:38 Uhr
Zitat von emeriks:

Zitat von 141320:
Das ist doch einfach $err enthält alle nötigen Properties.
Durchlaufe $err einfach mit einer Foreach-Schleife und prüfe die CategoryInfo.Reason
$err | gm *
Ja, aber dann vor dem Get-ChildiItem nicht das $err.clear() vergessen!
Nicht nötig ich nutzte hier ja nicht die besondere PS Variable $Error. Bei diesem Beispiel wird die $err Variable ja jedes mal neu erstellt.
Bitte warten ..
Mitglied: NetzwerkDude
01.10.2019, aktualisiert um 11:46 Uhr
Ich hatte vor einer Weile einen Tipp mit dem man auch längere Pfade mit PS ansprechen kann:
https://administrator.de/wissen/pfaden-260-zeichen-powershell-arbeiten-4 ...

Ansonsten evtl. die error action auf continue setzen, und die fehler alle mit
2>
umleiten in eine variable, und später dann auswerten

edit: mit error variable natürlich die viel elegantere antwort - ich sollte aufhören superlangsam auf dem handy zu schreiben
Bitte warten ..
Mitglied: 141320
01.10.2019, aktualisiert um 11:50 Uhr
Oder man aktiviert sich zus. lange Pfade.
How to enable paths longer than 260 characters in Windows 10

Aber ihm gings ja offensichtlich primär um die AccessException Fehler
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Get-SchedulesTask
gelöst Frage von derhoeppiBatch & Shell2 Kommentare

Hi, für einen Deploymentvorgang habe ich derzeit eine Batchdatei in der viele Scheduled Tasks disabled werden. In der Batchdatei ...

Batch & Shell
PowerShell - Get-ADObject
gelöst Frage von emeriksBatch & Shell11 Kommentare

Hi, mit ist gerade aufgefallen, dass man mit offenbar nicht alle Objekte aller Klassen zurückgeliefert bekommt. Diese Abfrage liefert ...

Batch & Shell
Powershell - Get-ADForest
gelöst Frage von emeriksBatch & Shell6 Kommentare

Hi, ich habe da im Powershell ein Verständnisproblem. Ich möchte alle Domänen einer Gesamtstruktur durchlaufen, um dann damit irgendwas ...

Batch & Shell
PowerShell - Get-Content - spinnt
gelöst Frage von emeriksBatch & Shell7 Kommentare

Hi, habe ein PS-Script. Get-Content liefert für dieselbe Datei (keine Replikate) verschiedene Ergebnisse, wenn das Script auf verschiedenen Servern ...

Neue Wissensbeiträge
Server-Hardware
Verkaufe NEUE Hp Ethernet 10gb 2port 530t Adapter
Information von lroeske vor 6 StundenServer-Hardware7 Kommentare

Hallo zusammen, Wer Interesse an einem oder mehreren Adaptern hat kann sich gerne bei mir melden, sind alle orginalverpackt ...

Verschlüsselung & Zertifikate

Extended Validation Certificates are (Really, Really) Dead

Information von Dani vor 2 TagenVerschlüsselung & Zertifikate

Moin all, sehr interessanter Artikel zu EV SSL/TLS- Zertifikate von Troy Hunt: Gruß, Dani

Humor (lol)
Das IoT wird schlimmer
Erfahrungsbericht von Henere vor 4 TagenHumor (lol)8 Kommentare

Nun auch schon über den WSUS:

Sicherheit

Win10 1809 und höher erlauben nun das Sperren und Whitelisten von bestimmten Geräten

Tipp von DerWoWusste vor 5 TagenSicherheit1 Kommentar

Vor 1809 konnten nur Geräteklassen gesperrt werden, nun können endlich einzelne Device instance IDs gewhitelistet werden (oder andersherum: gesperrt ...

Heiß diskutierte Inhalte
Netzwerke
Suche schnelleren VPN-Router für IPSec-Verbindung und zusätzlichem S0-Port für TK-Anlage, um Fritzbox zu ersetzen
Frage von TomSEE01Netzwerke36 Kommentare

Hallo, ich bin neu hier im Forum. Und zwar hätte ich folgende Frage, ich benötige eine VPN-Server Fähige Firewall/Router, ...

Schulung & Training
Was sollte man im Helpdesk bzw Service Desk 1st Level wissen
Frage von loubertSchulung & Training28 Kommentare

Hallo zusammen, ich fange demnächst in einem IT-Systemhaus meinen neuen Job im IT-Helpdesk (UHD), 1st Level (für externe Kunden,) ...

Netzwerkmanagement
Netzwerksegmentierung eines 16bit Kundennetzes
Frage von Locke2016Netzwerkmanagement21 Kommentare

Hallo lieber IT Mitstreiter, ich habe folgendes Problem bei einem Kunden, der ein grosses /16 Netz hat und bei ...

Server
Suche günstigen Server für erste Schritte mit Microsoft Windows Server 2016 + Exchange
gelöst Frage von vodaviServer19 Kommentare

Hallo zusammen, ich bin auf der Suche nach einem preiswerten, aber guten Server. Mir geht es darum, dass ich ...