none
Ausgegebenes Datum - Zeitdifferenz berechnen RRS feed

  • Frage

  • Hallo,

    Vorweg: Ich bin auf der PS leider nicht so bewandert.

    Ich habe aktuell eine kleine Aufgabe zu lösen.
    Hoffe das mir hier jemand weiterhelfen kann.

    Ich kann eine Zertifikatsabfrage machen.

    Ich bekomme auch den von mir benötigten Wert "NotAfter" mit dem Ablaufdatum meines Zertifikates zurück.
    Nun muss ich es irgendwie schaffen das ich von diesem Datum die Zeitdifferenz ermittle. Sprich ich würde die aktuellen Tage bis zum Ablauf des Zertifikats benötigen.
    Das Ziel ist es dann diesen Wert mit meinem Monitoring System abzufragen damit ich sehe wie lange auf meiner Maschine das Zerfifikat noch gültig ist.

    Kann mir hier jemand eventuell helfen und mir sagen wie ich da am besten rangehen soll.

    Vielen herzlichen Dank schon im Voraus
    LG
    Mandragora

    Hier der Link zum Screenshot
    kann leider noch keine Bilder einbinden

    https://i.imgur.com/NM6agxn.png



    Donnerstag, 1. Februar 2018 09:07

Antworten

Alle Antworten

  • Moin,

    es kommt darauf an, was für ein Datentyp das ist. Kannst Du den abgebildeten Output nach Get-Member pipen und schauen, ob die Property "NotAfter" vom Typ "datetime" ist? 

    Ist dies der Fall, kannst Du die Differenz einfach bilden mit

    $days_to_live = ((<Dein obiger Aufruf>).NotAfter - (Get-Date)).TotalDays

    Ansonsten kannst Du schauen, ob Du mit

    Get-Date (<Dein obiger Aufruf>).NotAfter
    einen validen datetime-Wert bekommst, dann kannst Du auch wieder eine Differenz bilden.


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    Donnerstag, 1. Februar 2018 09:48
  • Hallo Evgenij,

    Erstmal vielen Dank für deine schnelle Antwort.

    Mit der ersten von dir geposteten Abfrage bekomme ich nichts ausgegeben.
    Was meinst du mit "Datentyp" ?

    Mit der zweiten Abfrage erhalte ich das Datum ausgeben

    Sonntag, 23. September 2018 01:59:59


    Wie ich aber hier die Differenz bilde weiß ich aber leider nicht.
    Wie gesagt absoluter PS noob :(
     Danke für deine Geduld und Hilfe.
    LG
    mandragora

    Donnerstag, 1. Februar 2018 10:00
  • https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/new-timespan?view=powershell-5.1

    Dies sollte helfen.

    Donnerstag, 1. Februar 2018 10:03
  • Mit der ersten von dir geposteten Abfrage bekomme ich nichts ausgegeben.


    Ja, weil er das in die Variable schreibt. Gib deren Inhalt mal aus (einfach $days_to_live <ENTER>) ;-)

    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    Donnerstag, 1. Februar 2018 10:13
  • :-)

    Vielen Dank.. Ja auf das hätte ich auch kommen können :) wie gesagt bin halt noob :)

    Die Ausgabe sieht jetzt so aus

    233,608883311722

    Also Sprich sollten es noch 233 Tage bis zu diesem Datum sein.
    Werde jetzt noch versuchen bis zum , alles wegzuschneiden damit ich die reinen Tage bekomme.

    Vielen Dank Evgenij
    Du rettest mir schon mal den Tag damit :)

    LG
    Mandragora

    Donnerstag, 1. Februar 2018 10:28
  • Werde jetzt noch versuchen bis zum , alles wegzuschneiden damit ich die reinen Tage bekomme.

    Das sollte so klappen:

    $var = "233,608883311722"
    $tage = $var -replace '(\d),.*','$1'

    Donnerstag, 1. Februar 2018 11:34
  • $tage = $var -replace '(\d),.*','$1'

    Die saubere Methode: Behandle Objekte als das, was sie sind :-)
    Ich kenn leider den Ursprungscode nicht, aber Timespans haben eine .Days Eigenschaft.

    Donnerstag, 1. Februar 2018 13:40
  • Für Mandragora ... zum Veranschaulichung was Martin meint:
    $Start = '1.1.2010'
    $Ende = '31.12.2018'
    New-TimeSpan -Start $Start -End $Ende -OutVariable Differenz
    Damit hast Du jetzt die Differenz zwischen Start und Ende in der Variable $Differenz gespeichert. Ausgeben kannst Du sie so:
    $Differenz
    ... oder wenn Du auf eine bestimmte Eigenschaft zugreifen magst z.B. so:
    $Differenz.Days
    Lass doch einfach Powershell die Arbeit für Dich machen ...  ;-)


    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Donnerstag, 1. Februar 2018 15:02
    Donnerstag, 1. Februar 2018 15:01
  • Warum RegEx wenn es Funktionen gibt?
    kaufmännisches runden => Math::Round($var, 0) => 234
    Grundsätzlich abrunden (Achtung bei negativ) => Math::Floor($var) => 233
    Grundsätzlich aufrunden (Achtung bei negativ) => Math::Ceiling($var) => 234
    Donnerstag, 1. Februar 2018 15:04
  • Danke euch allen nochmals recht herzlich für die HIlfe

    LG
    Mandragora

    Montag, 5. Februar 2018 10:01