5 Replies Latest reply on Feb 19, 2016 7:20 AM by KaiNitzsche

    Job-Policy bis zu einem Datum ausführen

    KaiNitzsche Apprentice
      Moin.


      Die im DSM vorhandene Funktion, das ich beim zuweisen eines Paketes auf eine Gruppe ein definiertes Endatum eingeben kann, ist eigentlich genau das was ich brauche. Die Policy wird zugewiesen und der User kann die Installation bis zu diesem Tag verschieben.
      Leider habe ich keinen Weg gefunden, die DSM-Meldung welche da erscheint anzupassen. Kann man dort einen eigenen Text hinterlegen? In meinem Fall soll auf das Schließen von bestimmten Programmen und einen abschließenden Neustart hingewiesen werden.
      Eine alternative Idee war diese Funktion im Paket nachzubauen. Per WMI-Abfrage finde ich zwar das aktuelle Datum/Uhrzeit, aber ich kann ja nur mit IF auf "ist =" abfragen. Nach meiner Idee benötige ich aber ein ">". Sprich, das Paket fragt Datum/Uhrzeit ab und wenn es über einem Schwellwert ist, wird das Paket ausgeführt.

      Ich hoffe ihr habt mein Problem(chen) verstanden


      Viele Grüße
      Kai
        • 1. Re: Job-Policy bis zu einem Datum ausführen
          derniwi Master
          Hallo Kai,

          Du kannst bei der IF-Abfrage das "=" durch ein ">" ersetzen.
          I.d.R. funktioniert das. :-) allerdings weiß ich nicht, in wie weit ein String zerlegt wird, so dass hier ein "20.01.2016" größer sein kann als ein "01.12.2016".

          Ich habe da mal was gebastelt, wenn ich Datum und Uhrzeit bruache:
          !Variable initialisieren
          Set('_DATESEPARATOR','-')
          Set('_TIMESEPARATOR',':')
          Set('_DATETIMESEPARATOR',' ')
          Set('_DATE','')
          Set('_WMIDATE','')
          !
          !Datum und Uhrzeit von Win32_CurrentTime holen
          WMISimpleQuery('\\.\root\cimv2','Win32_CurrentTime','__CLASS=Win32_LocalTime','_WMIDATE')
          __CLASS
          Day
          Hour
          Minute
          Month
          Second
          Year
          EndProc
          !
          !Das Jahr auf vier Stellen und die anderen Werte auf zwei Stellen anpassen
          StrRight('0000%_WMIDATEYEAR%','4','_WMIDATEYEAR')
          StrRight('00%_WMIDATEMONTH%','2','_WMIDATEMONTH')
          StrRight('00%_WMIDATEDAY%','2','_WMIDATEDAY')
          StrRight('00%_WMIDATEHOUR%','2','_WMIDATEHOUR')
          StrRight('00%_WMIDATEMINUTE%','2','_WMIDATEMINUTE')
          StrRight('00%_WMIDATESECOND%','2','_WMIDATESECOND')
          !
          !Zeichenkette mit Datum und Uhrzeit im Format "JJJJ-MM-TT hh:mm:ss" erstellen
          Set('_DATE','%_WMIDATEYEAR%%_DATESEPARATOR%%_WMIDATEMONTH%%_DATESEPARATOR%%_WMIDATEDAY%%_DATETIMESEPARATOR%%_WMIDATEHOUR%%_TIMESEPARATOR%%_WMIDATEMINUTE%%_TIMESEPARATOR%%_WMIDATESECOND%')


          Damit sollte das dann aber auf jeden Fall klappen, indem Du das Datum passend zusammenbaust. Wenn Du am Anfang die drei Variablen "SEPARATOR" mit einem leeren Wert initialisierst, dann bekommst Du am Ende eine lange Zahl ohne Trennzeichen.

          Gruß
          Nils
          • 2. Re: Job-Policy bis zu einem Datum ausführen
            KaiNitzsche Apprentice
            Danke dir!!! Da im DSM dahinter steht "Strings vergleichen" habe ich das mit dem >< gar nicht ausprobiert, ich bin davon ausgegangen das das fix ist
            Dein Script schaue ich mir mal an, danke dafür!



            Viele Grüße
            Kai
            • 3. Re: Job-Policy bis zu einem Datum ausführen
              KaiNitzsche Apprentice
              Ich habe mal ein bisschen experimentiert und ein zufriedenstellende Lösung gefunden. Ich habe aus dem Script, die Uhrzeit raus genommen, da ich das so genau nicht brauche. Bei Bedarf kann man das aber natürlich auch wieder mit rein machen. Da ich einfach mal davon ausgehe, das DSM kein Datum vergleichen kann, prüfe ich einfach auf Jahr -> Monat -> Tag. Letztendlich ganz simpel.

              !Variable initialisieren
              Set('_DATE','')
              Set('_WMIDATE','')
              !
              !Datum und Uhrzeit von Win32_CurrentTime holen
              WMISimpleQuery('\\.\root\cimv2','Win32_CurrentTime','__CLASS=Win32_LocalTime','_WMIDATE')
              __CLASS
              Day
              Hour
              Minute
              Month
              Second
              Year
              EndProc
              !
              !Das Jahr auf vier Stellen und die anderen Werte auf zwei Stellen anpassen
              StrRight('0000%_WMIDATEYEAR%','4','_WMIDATEYEAR')
              StrRight('00%_WMIDATEMONTH%','2','_WMIDATEMONTH')
              StrRight('00%_WMIDATEDAY%','2','_WMIDATEDAY')
              !
              !Mit Zieldatum 17.02.2016 vergleichen
              If not %_WMIDATEYEAR%>='2016'
              ExitProcEx(Undone,'Installationstermin noch nicht erreicht.')
              Else
              If not %_WMIDATEMONTH%>='02'
                ExitProcEx(Undone,'Installationstermin noch nicht erreicht.')
              Else
                If not %_WMIDATEDAY%>='17'
                 ExitProcEx(Undone,'Installationstermin noch nicht erreicht.')
                Else
                 goto Ende
              : Ende
              ExitProcEx(Done,'Installation startet!')



              Viele Grüße
              Kai
              • 4. Re: Job-Policy bis zu einem Datum ausführen
                derniwi Master
                Hallo Kai,

                mit dem Set-Befehl kannst Du das weiter vereinfachen:
                !Variable initialisieren
                Set('_DATE','')
                Set('_WMIDATE','')
                !
                !Datum und Uhrzeit von Win32_CurrentTime holen
                WMISimpleQuery('\\.\root\cimv2','Win32_CurrentTime','__CLASS=Win32_LocalTime','_WMIDATE')
                __CLASS
                Day
                Hour
                Minute
                Month
                Second
                Year
                EndProc
                !
                !Das Jahr auf vier Stellen und die anderen Werte auf zwei Stellen anpassen
                StrRight('0000%_WMIDATEYEAR%','4','_WMIDATEYEAR')
                StrRight('00%_WMIDATEMONTH%','2','_WMIDATEMONTH')
                StrRight('00%_WMIDATEDAY%','2','_WMIDATEDAY')
                !
                !Zeichenkette mit Datum und Uhrzeit im Format "JJJJMMTT" erstellen
                Set('_DATE','%_WMIDATEYEAR%%_WMIDATEMONTH%%_WMIDATEDAY%')
                !Mit Zieldatum 17.02.2016 vergleichen
                If not %_DATE%>='20162017'
                ExitProcEx(Undone,'Installationstermin noch nicht erreicht.')
                ExitProcEx(Done,'Installation startet!')


                Gruß
                Nils
                • 5. Re: Job-Policy bis zu einem Datum ausführen
                  KaiNitzsche Apprentice
                  Prima, so ist es natürlich noch schicker!


                  Kai