6 Replies Latest reply on Sep 3, 2018 2:02 AM by SitzRieSe

    Letzter Reboot

    Bernhard.Hiemer Apprentice

      Hallo,

       

      ich würde gern mir ein Paket bauen, welches den letzten Reboot prüft und dann den User informiert, dass der Rechner neugestartet werden muss!

       

      Über WMI kann ich diesen Wert schon auslesen, aber ich weiß nicht wirklich, was ich mit diesem Wert dann anfangen kann.

       

      Vielen Dank!

        • 1. Re: Letzter Reboot
          KaiNitzsche Apprentice

          Hi.

           

          Warum per WMI, es gibt doch den Befehl if IsRebootPending? Alternativ kann man die Registrywerte abfragen, siehe pending reboot check

           

          Viele Grüße

          Kai

          • 2. Re: Letzter Reboot
            Bernhard.Hiemer Apprentice

            na es geht mir ja nicht darum, ob ein Reboot ausständig ist, sondern wann der letzte Reboot war.

             

            Ich will so typische nicht shutdowner damit abfangen.

            • 3. Re: Letzter Reboot
              KaiNitzsche Apprentice

              Achso, dann hatte ich dich falsch verstanden.

               

              Mit WMI bekommst du YYYYMMDDhhmmss, wobei bei den Sekunden noch ein ewig langer Rattenschwanz dran hängt. Das geht dann bis zur 1000stel oder noch weiter runter. Da man mit DSM und vor allem Datumsformaten im DSM nur schlecht rechnen kann, würde ich das eher ins PowerShell auslagen:

              $WMI_Abfrage = Get-WmiObject -Class Win32_OperatingSystem
              $WMI_Abfrage.ConvertToDateTime($WMI_Abfrage.LastBootUpTime)
              

               

              Das könnte man gegen das auf dem Client aktuelle Datum vergleichen und bei >1 Monat bspw. eine MessageBox ausgeben usw.usf.

               

              Viele Grüße

              Kai

              • 4. Re: Letzter Reboot
                Bernhard.Hiemer Apprentice

                OK, powershell gibt mir eine Datei aus (habs jetz über den Eventviewer gelöst), jetzt stellt sich mir die Frage, wie ich es im DSM vergleiche, sprich älter 2 Wochen, dann sollte eben ein Neustart erfolgen.

                 

                Hier mal das Eventviewer Script zur Abfrage:

                 

                function FNgetBootEvent {   ### Events lesen $log = Get-EventLog -logname System | ? {$_.EventID -eq "12" -and $_.Source -eq "Microsoft-Windows-Kernel-General"} if ($log) { ### Datum des letzten Kaltstarts filtern if( $log -is[array]){ $x =$log[0].TimeWritten $y = $log[0].MachineName     } else { $x =$log.TimeWritten $y = $log.MachineName     } $script:sysUT = (Get-Date)-(Get-Date $x) # Berechne verstrichene Zeit Set-Content "C:\Temp\bootlog_$y.txt" $x } } FNgetBootEvent Write-Host "Zeit seit letztem Kaltstart = "$sysUT

                • 5. Re: Letzter Reboot
                  KaiNitzsche Apprentice

                  Wie geschrieben, geht das im DSM m.E. nur bescheiden. Ich würde es so lösen, aber Achtung, nicht groß weiter getestet, sollte IMHO klappen. Mit der DSM-Variable %_NeustartNotwendig% kannst du dann "Ja" bzw "Nein" abfragen und entsprechend weiterverwursten:

                   

                  $AktuellesDatum = Get-Date -format 'dd.MM.yyyy HH:mm:ss'
                  $AktuellesDatum = [datetime]::parseexact($AktuellesDatum,"dd.MM.yyyy HH:mm:ss",$null)
                  $WMI_Abfrage = Get-WmiObject -Class Win32_OperatingSystem  
                  $Systemstartzeit = $WMI_Abfrage.ConvertToDateTime($WMI_Abfrage.LastBootUpTime)
                  $SystemstartzeitPlusZweiWochen = $Systemstartzeit.AddDays(14)
                  if ($AktuellesDatum -gt $SystemstartzeitPlusZweiWochen)
                  {
                      Set-NiVar "_NeustartNotwendig" "Ja"
                  } else
                  {
                      Set-NiVar "_NeustartNotwendig" "Nein"
                  }
                  
                  • 6. Re: Letzter Reboot
                    SitzRieSe Expert

                    Bernhard.Hiemer wrote:

                     

                    Hallo,

                     

                    ich würde gern mir ein Paket bauen, welches den letzten Reboot prüft und dann den User informiert, dass der Rechner neugestartet werden muss!

                     

                    Über WMI kann ich diesen Wert schon auslesen, aber ich weiß nicht wirklich, was ich mit diesem Wert dann anfangen kann.

                     

                    Vielen Dank!

                    Hi,

                     

                    wir haben das nativ im eScript mit WMIGetIndexData gelöst:

                    !check if the system is running for 7 days or longer

                    WMIGetIndexData('\\.\root\cimv2','Win32_PerfFormattedData_PerfOS_System','0','WMI_')

                    SystemUpTime

                    EndProc

                    !RegModify('HKEY_LOCAL_MACHINE\SOFTWARE\***\ClientInformations','SystemUptime','%WMI_SystemUpTime%',reUseX64Hive+mrReplace)

                    RegModifyDWord('HKEY_LOCAL_MACHINE\SOFTWARE\***\ClientInformations','SystemUptime','%WMI_SystemUptime%',mrdwSet+reUseX64Hive)/TS

                     

                    If RegValue('HKEY_LOCAL_MACHINE\SOFTWARE\***\ClientInformations','SystemUptime',reUseX64Hive)<'604800'

                     

                    Die Abfrage gibt die System Uptime in Sekunden aus. Hibernate und Standby werden ebenfalls berücksichtigt und nicht als Reboot gewertet.

                     

                    Gruß

                     

                    Alex

                    1 of 1 people found this helpful