Ich bin ein wenig verloren auf die beste Methode für das Filtern von Daten (siehe unten) mit mehreren Kriterien.Mehrere reguläre Ausdrücke stimmen überein
Als Beispiel MyServer2
und Sat 18:00
würden in MyServer2
und 04-23-16 1800
dass ich Ausgabe in zwei Textdateien kann.
"Server","MaintenanceWindow","Ping","LastReboot"
"MyServer1","NoDeadline","Alive","4/8/2016 2:44:32 PM"
"MyServer2","NA - DYNALG - SRV - Patching - Prod - Sat 18:00","Alive","4/16/2016 10:00:47 AM"
"YourServer","NA - All DA Servers - Patching - Prod - Fri 22:00","Alive","Access Denied!"
Mein aktueller Ansatz unten gezeigt wird, sind die beiden Where-Object
Linien, aber das ist immer mühsam und es ist nicht leicht zu lesen.
Ich bin mir auch nicht sicher, wie ich die statische "$((get-date).AddDays(7).ToString('MM-dd-yy')) 17:58"
in etwas dynamisches aktualisieren kann, das die Datum/Uhrzeitberechnung durchführt und die Datums-/Uhrzeit-Zeichenfolge ausgibt. Ich konnte [datetime]"04/23/2016 18:00" - (get-date)
verwenden, aber ich bin mir nicht sicher, wie ich die Daten in dieses Format bringen kann.
Where-Object {$_ -like '*sat?18:00*' -and $_.MaintenanceWindow -notmatch 'all.da.servers' -and $_.Server -match "^My"} | % {"{0}" -f $_.Server}
Where-Object {$_ -like '*sat?18:00*' -and $_.MaintenanceWindow -notmatch 'all.da.servers' -and $_.Server -match "^My"} | % {"{0}" -f $_.MaintenanceWindow -replace "^NA.+", "$((get-date).AddDays(7).ToString('MM-dd-yy')) 17:58"}
Dies ist wahrscheinlich der beste Ansatz zum Filtern von Daten. Sie können die Lesbarkeit verbessern, indem Sie den Skriptblock in mehrere Zeilen aufteilen oder in eine Filterfunktion einfügen. –
Möchten Sie zu dem Downvote Ihre Einwände posten und Verbesserungsvorschläge machen? Nicht jeder, der Fragen auf dieser Seite stellt, hat Erfahrung mit Skripten/Programmierung. – user4317867