Powershell - Aktuelle Zeitzone mit Serverzeit vergleichen
Für ein Monitoring möchte ich die aktuelle Zeitzone, in der sich ein server befindet mit der tasächlichen Systemzeit des Servers vergleichen. diese sollten identisch sein (zumindest bis auf die Minute).
Beispiel: Virtuelle Server beim Kunden in England:
daraus brauche ich jetzt den Part mit der Uhrzeit gefiltert (HH:mm) und möchte das mit auf den entsprechenden Zielsystem vergleichen und entsprechend 'true' und 'false' ausgeben für den Sensor.
Wie kann ich die Api-Abfrage trimmen, sodass ich die Werte gegenüberstellen kann?
Beispiel: Virtuelle Server beim Kunden in England:
Invoke-RestMethod -Uri 'worldtimeapi.org/api/timezone/Europe/London' | select datetime
datetime
--------
2023-10-12T13:22:32.313000+01:00
daraus brauche ich jetzt den Part mit der Uhrzeit gefiltert (HH:mm) und möchte das mit
get-date -format HH:mm
Wie kann ich die Api-Abfrage trimmen, sodass ich die Werte gegenüberstellen kann?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2946388094
Url: https://administrator.de/contentid/2946388094
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
6 Kommentare
Neuester Kommentar
Guten Tag,
eventuell hilft dir das hier, ist fertig
https://icinga.com/docs/icinga-for-windows/latest/plugins/doc/plugins/18 ...
https://github.com/Icinga/icinga-powershell-plugins/blob/master/plugins/ ...
Wir haben das bei einigen Kunden im Einsatz.
Gruß
eventuell hilft dir das hier, ist fertig
https://icinga.com/docs/icinga-for-windows/latest/plugins/doc/plugins/18 ...
https://github.com/Icinga/icinga-powershell-plugins/blob/master/plugins/ ...
Wir haben das bei einigen Kunden im Einsatz.
Gruß
Servus,
# API-Aufruf
$apiResponse = Invoke-RestMethod -Uri 'worldtimeapi.org/api/timezone/Europe/London' | Select-Object -ExpandProperty datetime
# Extrahieren der Uhrzeit (HH:mm) aus der API-Antwort
$apiTime = $apiResponse.Substring(11, 5)
# Systemzeit im HH:mm-Format abrufen
$systemTime = Get-Date -Format HH:mm
# Vergleich der Uhrzeiten
$comparisonResult = $apiTime -eq $systemTime
# Ausgabe des Vergleichsergebnisses
$comparisonResult
Moin,
die Datetime-Property aus der Antwort kannst du direkt mit Get-Date umwandeln
Für einen Vergleich ist das Trimmen allerdings vollkommen unnötig. Mit New-TimeSpan kannst du Zeiten problemlos vergleichen. Wenn du -Start oder -End weg lässt, wird dafür jeweils die aktuelle Zeit verwendet. Prüfen, ob die Zeitspanne weniger als eine Minute beträgt geht also z.B. so
Gruß Thomas
die Datetime-Property aus der Antwort kannst du direkt mit Get-Date umwandeln
Get-Date (Invoke-RestMethod -Uri 'worldtimeapi.org/api/timezone/Europe/London').Datetime -Format "HH:mm"
Für einen Vergleich ist das Trimmen allerdings vollkommen unnötig. Mit New-TimeSpan kannst du Zeiten problemlos vergleichen. Wenn du -Start oder -End weg lässt, wird dafür jeweils die aktuelle Zeit verwendet. Prüfen, ob die Zeitspanne weniger als eine Minute beträgt geht also z.B. so
[Math]::Abs((New-Timespan -Start (Invoke-RestMethod -Uri 'worldtimeapi.org/api/timezone/Europe/London').Datetime).TotalMinutes) -lt 1
Gruß Thomas
Guten Tag,
du hast nur einen Befehl importiert; wenn du diesen nicht nachbauen magst wäres hilfreicher des komplette Icinga Module zu importieren:
https://github.com/Icinga/icinga-powershell-plugins/tree/master
Du kannst auch das ganze Modul einfach in deinen Powershell-Modules Ordner kopieren und dann mit Unblock-File einmalig entsperren
Gruß