Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Ab bestimmten Datum sortieren Powershell

Frage Entwicklung Batch & Shell

Mitglied: Dpole86

Dpole86 (Level 1) - Jetzt verbinden

26.11.2013 um 11:05 Uhr, 2441 Aufrufe, 12 Kommentare

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

Mitglied: Snowman25
26.11.2013, aktualisiert um 11:18 Uhr
Zitat von Dpole86:
Guten Morgen liebe Administratoren
Hallo Dpole86

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
Bitte warten ..
Mitglied: Dpole86
26.11.2013 um 11:25 Uhr
Hi Snowman

Ich hätte gerne das ab einem Bestimmten Datum alles Ignoriert wird.

wir haben hier bei uns Rsync am Laufen um die Rechner synchron zu halten.

Das CSV welches ich gestern mit deiner Hiilfe aus dem Log erstellt habe, muss ich nun
so aufbereiten das wir jeden tag oder einmal in der woche eine mail bekommen mit dem Inhalt,
wo wir sehen, welcher Rechner sich länger nicht mehr am Rsync gemeldet hat.

so sieht die Datei bisher aus:

Client Date Time

Rechner NBAPS185 gemeldet am 2013/09/04 22:00:07
Rechner NBAPSV49 gemeldet am 2013/09/04 22:00:19
Rechner NBAPSV49 gemeldet am 2013/09/04 22:10:16
Rechner NBAPSV49 gemeldet am 2013/09/04 22:20:19
Rechner NBAPSV49 gemeldet am 2013/09/04 22:30:18
Rechner NBAPSV49 gemeldet am 2013/09/04 22:40:19
Rechner NBAPSV49 gemeldet am 2013/09/04 22:50:16
Rechner NBAPSV49 gemeldet am 2013/09/04 23:00:18
Rechner NBAPS164 gemeldet am 2013/09/05 0:03:27

Das Datum reicht von 04.09.2013 bis gestern.

Grüße Roman
Bitte warten ..
Mitglied: Daniel.Wenzel
26.11.2013 um 11:26 Uhr
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
Bitte warten ..
Mitglied: colinardo
26.11.2013, aktualisiert um 12:12 Uhr
Hallo Roman,
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
kannst du folgenden Code nutzen um alle Einträge die nicht älter als 7 Tage sind sortiert nach Client anzuzeigen:
01.
$csv = Import-CSV "C:\info.csv" -Delimiter ";" 
02.
$csv | ?{(get-date $_.DateTime) -gt (get-date).AddDays(-7)} | sort -Property Client
Grüße Uwe
Bitte warten ..
Mitglied: Dpole86
26.11.2013, aktualisiert um 13:52 Uhr
Hi Daniel Danke für die Links

Hi Uwe,

Super hat wunderbar geklappt.. Danke :D

Allerdings habe ich nun das Problem das ich Trotzdem mehrere Zeilen habe (insgesamt 1000)
somit ist das etwas unübersichtlich.

Ich müsste jetzt noch Doppelte Clients ausschliessen und nur den Letzen in dem Dokuemtn anzeigen lassen.

Kurz gesagt muss ich wissen welches Gerät sich wann das letzte mal gemeldet hat.

muss ich da mit foreach basteln?


Grüße Roman


Edit:

Habe bisher folgendes versucht:

$csv = Import-CSV "C:\win\bat\test.csv"
$csv | ?{(get-date $_.Date) -gt (get-date).AddDays(-7)} | sort -Property Date | measure -Maximum

gibt aus

Count : 548
Average :
Sum :
Maximum :
Minimum :
Property :

Count : 1
Average :
Sum :
Maximum : 11/26/2013 1:44:35 PM
Minimum :
Property :


habe auch versucht:

$csv = Import-CSV "C:\win\bat\test.csv"
$csv | ?{(get-date $_.Date) -gt (get-date).AddDays(-7)} | sort -Property Date |?{(foreach $_.Client) | measure -Maximum}

bringt aber viele viele Zeilen ^^

Edit:

Ich glaube ich habs hinbekommen.

Jetzt muss ich noch die Bat-datei anpassen :D
Bitte warten ..
Mitglied: Dpole86
26.11.2013 um 14:27 Uhr
So neues Problem.

Der Code

$csv = Import-CSV "C:\win\bat\test.csv"
$csv | ?{(get-date $_.Date) -gt (get-date).AddDays(-7)} | sort -Property Date |?{(foreach $_.Client) | measure -Maximum}

bringt das gleiche Ergebniss wie

$csv = Import-CSV "C:\win\bat\test.csv"
$csv | ?{(get-date $_.Date) -gt (get-date).AddDays(-7)} | sort -Property Date

mit dem unterschied das ersortiert.

ich habe aber weiterhin Einträge wie:

NBAPS99 2013/11/20 00:19:01
NBAPS166 2013/11/20 00:51:03
NBAPS99 2013/11/20 03:29:14

wie Prüfe ich das letze datum und die letze zeit eines Clients?
Bitte warten ..
Mitglied: colinardo
26.11.2013, aktualisiert um 15:18 Uhr
probiers mal mit dem -Unique Parameter, so wie deine Liste aussieht steht die aktuellste Zeit des Clients immer an letzter Stelle, dann geht das hier:
01.
$csv = Import-CSV "C:\CSVDatei.csv" -Delimiter ";" 
02.
$csv | ?{(get-date $_.DateTime) -gt (get-date).AddDays(-7)} | Sort-Object -Property Client -Unique
Grüße Uwe
Bitte warten ..
Mitglied: Dpole86
26.11.2013 um 14:39 Uhr
Sieht gut aus :D

ich glaube das war das Stichwort das ich gebruacht habe

Danke Uwe
Bitte warten ..
Mitglied: Dpole86
26.11.2013 um 15:00 Uhr
Hi Uwe.

Leider ist das Problem noch nicht ganz behoben.
Zwar bekomme ich jetzt eine Liste wo der REchner jeweils nur 1 mal auftaucht, Allerdings ist das Meldedatum nicht richtig

Beispiel hat sich NBAPS77 am 04.11.2013 letztes mal gemeldet. Das aber kann nicht sein da es mein Rechner ist und ich mich immer wieder daran melde ^^

habs mit
|?{(foreach $_.Date)} -unique
versucht aber das geht irgendwie nicht
Bitte warten ..
Mitglied: colinardo
26.11.2013 um 15:05 Uhr
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.
Bitte warten ..
Mitglied: Dpole86
26.11.2013 um 15:11 Uhr
Hi colinardo

Muss ich den Delimiter mitnehmen?

Ja das ist richtig. Bei mir ist das Datum und die Zeit in jeweils einer Spalte.

Mein code sieht so aus:

01.
  
02.
$csv = Import-CSV "C:\win\bat\test.csv" 
03.
$csv | ?{(get-date $_.Date) -gt (get-date).AddDays(-7)} | Sort-Object -Property Client -unique
Probiert habe ich es gerade eben mit


01.
  
02.
$csv = Import-CSV "C:\win\bat\test.csv" 
03.
$csv | ?{(get-date $_.Date) -lt (get-date).AddDays(-7)} | Sort-Object -Property Client -unique
Allerdings ist da das letze Meldedatum am 24.09.2013

Grüße Roman
Bitte warten ..
Mitglied: colinardo
26.11.2013, aktualisiert um 18:47 Uhr
So hier noch mal zum Abschluss die Lösung für Roman:
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"
erhalten wir mit folgendem Code:
01.
$csv = Import-CSV "C:\Temp\test.csv" -Delimiter "," 
02.
$csv | ?{(get-date $_.Date) -gt (get-date).AddDays(-7)} | sort Client,Date,Time -Descending | group Client | %{$_.Group[0]}
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:
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   
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...