Ab bestimmten Datum sortieren Powershell
Guten Morgen liebe Administratoren
Ich ersuche eure hilfe da ich mich auf fremden Gebiet befinde.
Bisher habe ich nur batch gescriptet will mich aber nun weiter wagen richtung Powershell.
Ich versuche gerade aus einer CSV die Daten ab einem bestimmten Datum zu Sortieren und
die Ausgabe danach als Email zu verschicken.
Ich habe mich in Powershell etwas eingelesen und fand den Befehl import-Csv
dadurch kann ich die CSV importieren und auch nach Datum Sortieren
Wie Sortiere ich allerdings nach einem Bestimmten datum ?
Grüß eRoman
Ich ersuche eure hilfe da ich mich auf fremden Gebiet befinde.
Bisher habe ich nur batch gescriptet will mich aber nun weiter wagen richtung Powershell.
Ich versuche gerade aus einer CSV die Daten ab einem bestimmten Datum zu Sortieren und
die Ausgabe danach als Email zu verschicken.
Ich habe mich in Powershell etwas eingelesen und fand den Befehl import-Csv
dadurch kann ich die CSV importieren und auch nach Datum Sortieren
Wie Sortiere ich allerdings nach einem Bestimmten datum ?
Grüß eRoman
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222986
Url: https://administrator.de/contentid/222986
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo @Dpole86
@Snowman25
Wie Sortiere ich allerdings nach einem Bestimmten datum ?
Wie meinst du das? Willst du, dass alles bevor einem festgelegtem Datum ignoriert wird? oder abgeschnitten?Grüß eRoman
Gruß,@Snowman25
Hallo Roman,
hier ist ein Link zu einem ziemlich guten PowerShell Blog:
https://blogs.technet.com/b/heyscriptingguy/archive/2012/01/10/order-you ...
Und hier findest du etwas zu der Syntax des "sort by" Objektes:
http://technet.microsoft.com/en-us/library/hh849912.aspx
Ich hoffe das hilft dir weiter.
Gruß
Daniel
hier ist ein Link zu einem ziemlich guten PowerShell Blog:
https://blogs.technet.com/b/heyscriptingguy/archive/2012/01/10/order-you ...
Und hier findest du etwas zu der Syntax des "sort by" Objektes:
http://technet.microsoft.com/en-us/library/hh849912.aspx
Ich hoffe das hilft dir weiter.
Gruß
Daniel
Hallo Roman,
das ist kein Problem.
Beispiel: Wenn deine CSV-Datei z.B. so formatiert ist:
kannst du folgenden Code nutzen um alle Einträge die nicht älter als 7 Tage sind sortiert nach Client anzuzeigen:
Grüße Uwe
das ist kein Problem.
Beispiel: Wenn deine CSV-Datei z.B. so formatiert ist:
Client;DateTime
NBAPS185;2013/09/04 22:00:07
NBAPSV49;2013/09/04 22:00:19
NBAPSV49;2013/09/04 22:10:16
NBAPSV49;2013/09/04 22:20:19
NBAPSV49;2013/09/04 22:30:18
NBAPSV49;2013/09/04 22:40:19
NBAPSV49;2013/09/04 22:50:16
NBAPSV49;2013/09/04 23:00:18
NBAPS164;2013/09/05 0:03:27
$csv = Import-CSV "C:\info.csv" -Delimiter ";"
$csv | ?{(get-date $_.DateTime) -gt (get-date).AddDays(-7)} | sort -Property Client
probiers mal mit dem
Grüße Uwe
-Unique
Parameter, so wie deine Liste aussieht steht die aktuellste Zeit des Clients immer an letzter Stelle, dann geht das hier:$csv = Import-CSV "C:\CSVDatei.csv" -Delimiter ";"
$csv | ?{(get-date $_.DateTime) -gt (get-date).AddDays(-7)} | Sort-Object -Property Client -Unique
wie sieht deine CSV-Liste genau aus und welchen Delimiter verwendest du, formatiere die Liste mal so wie ich es oben geschrieben habe, dann geht das. Und bitte benutze Tags zum formatieren deines Codes hier im Forum. Merci.
Wahrscheinlich verwendest du als Delimiter Leerzeichen und hast Datum und Zeit getrennt voneinander in jeweils einer Spalte aufgeführt.
Wahrscheinlich verwendest du als Delimiter Leerzeichen und hast Datum und Zeit getrennt voneinander in jeweils einer Spalte aufgeführt.
So hier noch mal zum Abschluss die Lösung für Roman:
bei einer so formatierten CSV-Datei:
erhalten wir mit folgendem Code:
die Einträge mit dem jeweils aktuellste Datum. Doppelte Einträge in der Spalte "Client" werden also herausgefiltert und nur der Eintrag mit dem jeweils aktuellsten Datum erhalten.
Die Ausgabe sähe dann also für obige Daten so aus:
bei einer so formatierten CSV-Datei:
"Client","Date","Time"
"NBAPS77", 2013/09/04,"17:52:53"
"NBAPS71", 2013/09/04,"18:00:09"
"NBAPS79", 2013/09/04,"20:00:46"
"NBAPS164", 2013/09/04,"20:27:56"
"NBAPS99", 2013/09/04,"20:59:39"
"NBAPS185", 2013/09/04,"21:00:08"
"NBAPS128", 2013/09/04,"21:10:18"
"NBAPS185", 2013/09/04,"22:00:07"
"NBAPS164", 2013/09/05,"00:03:27"
"NBAPS79", 2013/09/05,"00:24:40"
"NBAPS99", 2013/09/05,"00:43:38"
$csv = Import-CSV "C:\Temp\test.csv" -Delimiter ","
$csv | ?{(get-date $_.Date) -gt (get-date).AddDays(-7)} | sort Client,Date,Time -Descending | group Client | %{$_.Group}
Die Ausgabe sähe dann also für obige Daten so aus:
Client Date Time
------ ---- ----
NBAPS99 2013/09/05 00:43:38
NBAPS79 2013/09/05 00:24:40
NBAPS77 2013/09/04 17:52:53
NBAPS71 2013/09/04 18:00:09
NBAPS185 2013/09/04 22:00:07
NBAPS164 2013/09/05 00:03:27
NBAPS128 2013/09/04 21:10:18