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 Mit Powershell Datum aus Ordnername als Datum extrahieren

Mitglied: YotYot

YotYot (Level 1) - Jetzt verbinden

10.10.2018 um 17:19 Uhr, 221 Aufrufe, 11 Kommentare, 1 Danke

Moin!

ja, ich habe bereits gesucht und auch ein paar Fortschritte gemacht, da ich aber außerhalb von Exchange gerade erst mit Powershell anfange, hänge ich gerade ein wenig.

Was habe ich?
- Ich habe eine wachsende Menge von Ordnern, die allesamt mit einem Datum benannt sind. Beispiel: 2018-12-31
- Die Ordner haben wirklich nur das Datum als Ordnernamen in der Formatierung wie oben, also YYYY-MM-DD
- Das System (Windows Server 2008 R2) und Regionaleinstellungen sind deutsch
- Powershell V 4.0

Was brauche ich?
- Ich will anhand des Namens den aktuellsten Ordner identifizieren. Die Namen werden unabhängig von der tatsächlichen Erstellungs- oder Änderungszeit erzeugt, die für mich maßgebliche Info steht im Ordnernamen, nicht in den Eigenschaften.

Wie weit komme ich?
- Ich lade alle Ordnernamen in ein Array.

Wo hängt es?
- Ich kriege es nicht hin, die einzelnen Einträge in ein Datum zu konvertieren. Wenn ich mit ParseExact arbeite, bekomme ich die Meldung, dass das Ausgangsformat nicht korrekt wäre. Mit einer selbstgeklauten Funktion "ConvertStringDate", die ich im Internet gefunden habe, bekomme ich leere Ergebnisse. Ja, natürlich habe ich die auf meine Umgebung angepasst

Hat jemand eine Idee für mich, wie ich das gelöst bekomme?

Gruß

Jörg
Mitglied: colinardo
LÖSUNG 10.10.2018, aktualisiert um 17:54 Uhr
Servus Joerg,
Hat jemand eine Idee für mich, wie ich das gelöst bekomme?
nicht weiter schwer, mit sort-object kannst du dann noch direkt nach dem Datum sortieren ohne irgendwelche Arrays
01.
gci "D:\DeinRootOrdner" -Directory | ?{$_.Name -match '^\d{4}-\d{2}-\d{2}$'} | sort {[Datetime]::Parse($_.Name,[cultureinfo]::GetCultureInfo('en-US'))} -Descending | select -First 1
Die Macht der Kraftmuschel sei mit dir .

Grüße Uwe
Bitte warten ..
Mitglied: erikro
LÖSUNG 11.10.2018 um 09:17 Uhr
Moin,

Zitat von YotYot:
Wo hängt es?
- Ich kriege es nicht hin, die einzelnen Einträge in ein Datum zu konvertieren. Wenn ich mit ParseExact arbeite, bekomme ich die Meldung, dass das Ausgangsformat nicht korrekt wäre. Mit einer selbstgeklauten Funktion "ConvertStringDate", die ich im Internet gefunden habe, bekomme ich leere Ergebnisse. Ja, natürlich habe ich die auf meine Umgebung angepasst

das ist ganz einfach:

01.
 get-childitem -directory | %{get-date -date $_.name}
hth

Erik
Bitte warten ..
Mitglied: colinardo
LÖSUNG 11.10.2018, aktualisiert um 09:23 Uhr
Zitat von erikro:
das ist ganz einfach:

01.
 get-childitem -directory | %{get-date -date $_.name}
Wenn, ja wenn wirklich alle Ordner dem Schema entsprechen und die Locale passt, ansonsten mit Fehlermeldungen überschüttet .
Bitte warten ..
Mitglied: erikro
LÖSUNG 11.10.2018 um 09:36 Uhr
Zitat von colinardo:

Zitat von erikro:
das ist ganz einfach:

01.
 get-childitem -directory | %{get-date -date $_.name}
Wenn, ja wenn wirklich alle Ordner dem Schema entsprechen und die Locale passt, ansonsten mit Fehlermeldungen überschüttet .

Das hat der TO ja gesagt, dass das so ist. Ich vermute mal, dass die automatisiert erstellt werden.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 11.10.2018, aktualisiert um 09:54 Uhr
Zitat von erikro:
Das hat der TO ja gesagt, dass das so ist. Ich vermute mal, dass die automatisiert erstellt werden.
Hoffen wir's denn das folgende Kommentar:
Wenn ich mit ParseExact arbeite, bekomme ich die Meldung, dass das Ausgangsformat nicht korrekt wäre.
lässt eine Vermutung zu das da ein paar Ordner als Querschläger drin sind (Leerzeichen & Co.) wenn er nicht mit der Syntax Misst gebaut hat (sehen wir ja leider nicht).
Aber Vorsicht ist die Mutter der Porzellan-Kiste .
Bitte warten ..
Mitglied: YotYot
11.10.2018, aktualisiert um 12:03 Uhr
Die Kraftmuschel ist aber sowas von mit Dir, Uwe! Ist ja egal, wo oder was ich seit Jahren mal frage, Du hast immer passenden Senf dabei, oder?

Danke, Mann, funktioniert!

Und ja, Du hast Recht: in dem Ausgangspfad gibt es noch weitere Ordner und Dateien, die anders benannt sind, ich hatte es vorher gefiltert in ein Array geschrieben.
Das mit dem -match muss ich mir mal genauer anschauen, was da passiert. Erinnert mich ein wenig an Javascript.

Und ja, die Ordner werden automatisiert erzeugt (na gut, das könnte ich ändern, denn die Namensgebung erzeuge ich selbst mit Excel-VBA, nur muss sich momentan noch eine unbedarfte Schreibkraft manuell damit auseinandersetzen). Da ich aber ein total fauler Mensch bin, will ich alles automatisch haben. Und manche Dinge dazu bringe ich mir gerade bei.

Euch beiden Danke für Hilfe und Hinweise, auch erikro, wegen Eurer Diskussion habe ich nämlich die aufwändigere Variante von colinardo von vornherein genommen.

Grüße von Jörg
Bitte warten ..
Mitglied: colinardo
11.10.2018, aktualisiert um 12:08 Uhr
Zitat von YotYot:
Das mit dem -match muss ich mir mal genauer anschauen, was da passiert. Erinnert mich ein wenig an Javascript.
Das nennt sich Regular Expression und es filtert die Ordner aus die der benötigten Syntax entsprechen.
Für eine detailliertere Beschreibung der mächtigen Syntax siehe
Regular Expressions Tutorial
Ist auf jeden Fall empfehlenswert das im Repertoire zu haben, das brauche ich täglich und in so gut wie jeder Programmier- oder Skriptsprache.

Obiger Pattern
^\d{4}-\d{2}-\d{2}$
bedeutet ausgeschrieben so viel wie:
Assert position at the beginning of a line «^» 
Match a single character that is a “digit” «\d{4}» 
   Exactly 4 times «{4}» 
Match the character “-” literally «-» 
Match a single character that is a “digit” «\d{2}» 
   Exactly 2 times «{2}» 
Match the character “-” literally «-» 
Match a single character that is a “digit” «\d{2}» 
   Exactly 2 times «{2}» 
Assert position at the end of a line «$»
Grüße Uwe
Bitte warten ..
Mitglied: YotYot
11.10.2018 um 14:40 Uhr
Gibt's von Dir ein Buch mit solchen Beschreibungen? Kauf ich!

Meine richtig aktive Zeit war zu Zeiten von PowerShell 2.0 zu Ende, aktuell ist es nur noch unser eigenes Netzwerk mit 50 Usern und einem Haufen anderer Aufgaben. Heute habe ich nur noch schubweise mal die eine oder andere Anforderung, bedeutet aber auch jedesmal, sich ein Stück weit wieder einzuarbeiten. Das Los eines Generalisten, der bei zu vielen Themen "Ja, mach ich" gesagt hat.
Das augenscheinlich gleiche Ergebnis Deiner viel besseren Lösung habe ich z.B. mit Where -like "20??-??-??" erzeugt.

Grjuß

Jörg
Bitte warten ..
Mitglied: colinardo
11.10.2018, aktualisiert um 15:40 Uhr
Zitat von YotYot:

Gibt's von Dir ein Buch mit solchen Beschreibungen? Kauf ich!
Nee . Die Beschreibung macht hier "RegexBuddy" aus dem Pattern automatisch.
Das augenscheinlich gleiche Ergebnis Deiner viel besseren Lösung habe ich z.B. mit Where -like "20??-??-??" erzeugt.
Geht natürlich auch.
Natürlich kann man es jetzt bis auf die Spitze treiben indem man mit TryParse() wirklich noch auf ein gültiges Datum testet wenn z.B. jemand absichtlich ein Datum wie 2012-13-01 platziert
Bitte warten ..
Mitglied: erikro
11.10.2018 um 15:40 Uhr
Zitat von colinardo:
Natürlich kann man es jetzt bis auf die Spitze treiben indem man wirklich noch auf ein gültiges Datum testet wenn z.B. jemand absichtlich ein Datum wie 2012-13-01 platziert

Dann doch lieber ein try-catch mit get-date
Bitte warten ..
Mitglied: colinardo
11.10.2018, aktualisiert um 15:47 Uhr
Zitat von erikro:
Dann doch lieber ein try-catch mit get-date
Kommt alles aus dem .NET ist also piepe und nur Geschmackssache denn in TryParse ist das Try-Catch schon inkludiert:
01.
gci "D:\Ordner" -Directory | ?{[datetime]$d = [datetime]::MinValue;[datetime]::TryParse($_.Name,[ref]$d)} | sort {[Datetime]::Parse($_.Name,[cultureinfo]::GetCultureInfo('en-US'))} -Descending | select -First 1
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Zip extrahieren
gelöst Frage von MarabuntaBatch & Shell2 Kommentare

Hi, ich möchte ein ZIP-Archiv extrahieren, und dabei alles überschreiben. Zur Zeit kommt mit dem Code auch ein fortschrittsfenster, ...

Batch & Shell

Powershell Ordnername auslesen und verwenden

gelöst Frage von zamsi7Batch & Shell3 Kommentare

Hallo an alle, hoffe ich bin hier richtig und jemand kann mir helfen :) Ich möchte eine cert Datei ...

Batch & Shell

Powershell Monthcalendar Datum Format ändern

gelöst Frage von xpxy15Batch & Shell4 Kommentare

Hallo Zusammen Wie kann ich bei monthcalendar Windowsforms den Format ändern. Ich brauche es in dieser Format dd.mm.yyyy. Ich ...

Batch & Shell

Farblich Markieren nach Datum per Powershell

gelöst Frage von Crank69Batch & Shell2 Kommentare

Hallo Leute, vielleicht kann mir jemand helfen. Ich würde sehr gerne das aktuelle Datum in Grün. Was 1 - ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 1 TagMicrosoft4 Kommentare

Da diese Infos scheinbar unerwünscht sind, habe ich diese wider gelöscht.

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 1 TagSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 1 TagSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 2 TagenHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen40 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...

Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple25 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic19 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

Datenbanken
MS SQL DB-Daten archivieren?
gelöst Frage von SchelinhoDatenbanken16 Kommentare

Hallo zusammen! Ich habe eine Anwendung, welche MSSQL (SQL Server 2014 SP2) nutzt. Auf der DB-Instanz laufen diverse Datenbanken. ...