Jump to content

Herausfinden ob PC Neustartet oder Herunterfährt


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo MCSEboard,

 

 

Ich habe ein (VBS) Script welches sich automatisch beim Herunterfahren bzw beim Neustart des PCs ausführt.

Ich hätte das aber gerne so, dass bei einem Neustart des Rechners das Script etwas anderes tut als es bei Herunterfahren macht.

 

Also meine Frage, gibt es eine Möglichkeit nachdem die shutdown.exe aufgerufen wurde, noch herrauszufinden wie dessen Parameter waren? Also \s (Herunterfahren) oder \r (Neustart) ?

 

Irgendwo muss die Information ja gespeichert werden ob der Rechner anschließend wieder bootet oder aus bleibt.

 

 

 

 

Schonmal Danke im vorraus !

 

 

 

Mfg

WhiteGloves

Link zu diesem Kommentar

Danke ! Ich denke hier im Board lässt sich noch so einiges lernen.

 

Dein Link hat mir jetzt nicht weitergeholfen, er zeigt ja nur wie ich einen Task mithilfe des "Taskplaners" nach dem Booten starten kann.

Ich hab mal die weiterführenden Links angeschaut aber ich glaube nicht das ich dort finde wonach ich suche.

 

Oder weißt du da genaueres, dass es mit diesem TaskService Object oder einem ähnlichem möglich ist die benötigte Information herauszufinden !?

 

 

Man müsste genaueres über die Arbeitsweise der shutdown.exe herausfinden...

Fährt Sie das System herunter und überprüft zum Schluss ob Neugestartet werden soll und bootet das System neu?

Ich mein... irgendwie muss Windows ja mitgeteilt werden das es anschließend wieder booten soll....

Link zu diesem Kommentar

Hi,

 

eine konkrete Abfrage kenne ich leider nicht, aber sicherlich läßt sich das beispielsweise über WMI auslesen. So gibt es etwa unter root\CIMV2 --> Win32_OperatingSystem die "LastBootUpTime". Vielleicht kannst Du einmal schauen, ob es auch so etwas wie einen Status gibt. Die Property "Status" scheint zumindest nicht das zu sein, was Du suchst. Ich konnte jedoch auf die Schnelle auch keine andere Klasse finden als die "LastBootUpTime".

 

Dokumentiert sind die Klassen hier: WMI Classes (Windows)

 

Alternativ könntest Du als Ausweichlösung das Ereignisprotokoll auslesen. Im System Event Log wird eingetragen, wann das Ereignisprotokoll gestartet wurde und wann es beendet wurde. Damit hast Du Indikatoren, ob es sich momentan um einen Neustart oder einen Shutdown handelt.

 

Sicherlich gibt es auch irgend eine Konstante, die beim Start oder beim Shutdown geschrieben wird. Aber dazu fällt mir mometan leider nichts ein.

 

Viele Grüße

olc

Link zu diesem Kommentar
Alternativ könntest Du als Ausweichlösung das Ereignisprotokoll auslesen. Im System Event Log wird eingetragen, wann das Ereignisprotokoll gestartet wurde und wann es beendet wurde. Damit hast Du Indikatoren, ob es sich momentan um einen Neustart oder einen Shutdown handelt.

 

Hmm ich wüsste nicht wie das gehen soll....

Mein Script schaltet sich erst ein wenn das System heruntergefahren / neugestartet wird. Nicht beim Bootvorgang !

Zu diesem Zeitpunkt, wird in die Eventlog höchstens eingetragen welche Dienste oder Prozesse beendet werden.

Wenn ich die Zeit auslese wann das Ereignisprotokoll gestartet wurde, dann ist das System ja schon wieder hochgefahren und dann greift mein Script ja nicht mehr....

 

Den WMI werde ich mir morgen auf der Arbeit nochmal genauer anschauen, danke !

Link zu diesem Kommentar

Guten Abend,

 

wie gesagt, es muß irgendwelche Variablen / Konstanten / Codes geben, die den aktuellen Status ausgeben. Aber bisher habe ich das noch nicht auslesen müssen, daher fehlt mir momentan die Idee.

 

Einmal anders gefragt: Was genau tut das Script bzw. was ist der Hintergrund für dieses Vorgehen? Vielleicht gibt es ja noch andere Lösungsansätze.

 

Viele Grüße

olc

Link zu diesem Kommentar

Hallo blub,

 

ich habe mein System gerade mal neugestartet und anschließend das Systemevent durchgeguckt aber ich konnte keinen Shutdown type finden, auch keine ID #1074 !

 

Wo hast du diese Information her?

 

(Nur so zur Info: Ich nutze Win XP)

 

 

Olc:

Einmal anders gefragt: Was genau tut das Script bzw. was ist der Hintergrund für dieses Vorgehen? Vielleicht gibt es ja noch andere Lösungsansätze.

 

Was das Script tut ist eher uninteressant, und es gibt keinen anderen Lösungansatz...

Es wird ausgeführt wenn das System herunterfährt / neustartet und es muss zu diesem Zeitpunkt wissen ob ein reboot oder ein shutdown ausgeführt wird!

Von wo es sich diese Information holt ist dabei völlig egal...

Link zu diesem Kommentar
Es ist nämlich doch interessant....

 

Nein ist es nämlich nicht :rolleyes:

 

Wieso behauptest du, dass es doch Interessant wäre zu wissen was das Script tut, wenn ich sage das es nicht so ist und du ja nichteinmal weißt was das Script macht und daher auch keine Rückschlüsse darauf ziehen kannst ob es eine andere Möglichkeit gäbe !?

 

Da sich das Script erst aktiviert wenn der Shutdown / Reboot aktiv ist, und auch nur genau dann, seine Sinnvolle Aufgabe verrichten kann wenn es an diesem Zeitpunkt weiß ob ein reboot oder ein shutdown ausgeführt wird dann ist es so.

 

Alle anderen Lösungens Ideen, welche das auch immer sein mögen die du mir nennen willst oder könntest wenn du wüsstest was das Script tut, ausser auszulesen ob reboot oder shutdown stattfindet, gibt es entweder nicht oder sind nicht machbar.

 

Das Script muss es zu diesem Zeitpunkt wissen !

 

Einzige Lösung die ich bisher hören durfte war es nach einem Start des Systems auszulesen (z.B aus dem Eventlog...) wieviel Zeit zwischen der Systemstartzeit und der letzen Shutdownzeit verstrichen ist, um somit auszuwerten ob ein Reboot stattgefunden hat, sind zwar Möglich, aber absolut unbrauchbar da mein Script jetzt nicht mehr ausgeführt wird und auch nicht mehr Sinn machen würde.

 

Also bleibt als letzte und einzige Lösung... während der Scriptlaufzeit also während des Shutdowns auszulesen ob Reboot oder Shutdown stattfindet.

Woher das ausgelesen oder wie sich das ermitteln läßt ist völlig egal.

 

 

Jetzt kommen sicherlich solche Posts, vonwegen "wenn du uns nicht sagst was das Script macht, können wir dir auch nicht helfen".

Vorweg sei gesagt, sowas braucht ihr gar nicht erst zu Posten, da es nämlich nicht stimmt !

Und ihr somit sinnloserweiße nur eure Foren Beitragszähler erhöht/erhöhen wollt.

 

Ein zusätzlicher Grund, neben dem das es absolut irrelevant ist zu wissen was das Script macht, ist das es eine Menge Arbeit wäre dies hier zu erläutern.

 

 

 

....Die Shutdown Sequenz ist die gleiche, egal ob der Rechner abschaltet, oder wieder startet....

 

Darf ich erfahren woher du diese Information hast?

Oder ist das nur deine Vermutung?

 

 

 

Also wenn noch jemand etwas weiß oder Tipps geben könnte wie man vielleicht an diese Information kommen könnte, immer her damit ! :D

Link zu diesem Kommentar

Moin,

 

könntest du dich bitte mal ein bisschen abplustern?

 

Hier sind zahlreiche Leute, die kostenlos und in ihrer Freizeit versuchen, dich zu unterstützen. Die Nachfragen, die gestellt wurden, sind absolut berechtigt. Du magst Gründe haben, die Informationen zu verweigern, aber das entwertet nicht die Fragen. Dass noch kein Lösungsvorschlag dabei war, der dich befriedigt, berechtigt dich nicht, andere abzuqualifizieren - denn wie du ja selbst bestätigen kannst, ist dein Problem kein Alltägliches.

 

Und vor allem ist das kein Grund, andere oder das ganze Forum zu beschimpfen.

 

Verwunderte Grüße, Nils

Link zu diesem Kommentar

Sorry wenn du glaubst das ich damit die User beleidigt habe dann solltest du nochmal den Thread lesen.

 

Es macht halt nunmal keinen Unterschied bei der Hilfe für mein Problem ob die User wissen was das Script macht oder nicht.

Tatsache. Und nichts anderes habe ich geschrieben.

 

Ich bin nur etwas über seine Aussage verärgert, dass er schrieb das es nämlich doch Interessant wäre das zu wissen...

Und wenn wir mal alle einen Moment drüber nachdenken, zumindest die Anwendungsentwickler unter uns, dann werden wir zu dem Schluss kommen das er falsch liegt.

 

 

Wenn jemand der den Thread ließt und keine Antwort auf die Frage hat, soll er nicht irgendwas posten nach dem Motto, vielleicht gehts auch anders, wenn ich bereits erwähnt habe das es nur diesen Weg gibt.

 

 

Wahrscheinlich gibt es in Windows keine Information darüber, sondern der reboot aktiviert eine Funktion im ACPI des Bios.

Ich glaube das ich diesen Weg weiterverfolgen werden, es gibt nämlich mittels ASL (ACPI Control Method Source Language) einen Weg gewisse Informationen aus dem ACPI auszulesen, vielleicht findet sich dort etwas zu dem "Shutdown Modus".

 

 

Trotzdem Danke für Hilfe

 

 

PS: Ich bin nicht darauf aus mich mit Leuten hier zu streiten, wenn du dich, abra-x-as, in irgendeiner Form von mir angegriffen fühlen solltest, bitte ich um Verzeihung.

Zudem will ich diese Diskussion nicht fortführen ob es jetzt einen Unterschied macht zu wissen was das Script tut oder nicht. Daher bitte ich auch alle anderen die jetzt gerne nach Lesen des Threads ihren Senf dazu geben möchten, dass einfach zu lassen ;)

 

Für Tipps und Lösungsansätze oder Ideen bin ich trotzdem weiterhin dankbar !

Link zu diesem Kommentar

Hi WhiteGloves,

 

vielleicht zu dem Thema ein grundsätzlicher Einwurf: Wann genau (also in welchem Betriebssystemstatus) soll das Script ausgeführt werden? Wenn Dir die Start- / Stopkommandos des Ereignisprotokolls nicht ausreichen, dann sollen die Scripte offensichtlich davor oder danach ablaufen. Zu diesem Zeitpunkt stehen jedoch noch nicht alle Interpreter zur Verfügung, so daß es etwa mit einem VBScript schlecht aussehen kann.

Grundsätzlich ist die ACPI-Geschichte sicherlich interessant - dort kommt man auch über WMI ran. Jedoch ist die Frage, ob zum von Dir gewünschten Zeitpunkt schon alle Betriebssystemteile zur Verfügung stehen, um Deine Scripte auszuführen (siehe oben).

 

Auch wenn Du diese Diskussion hier abwürgen willst - ich habe nicht ohne Grund gefragt, was das Script macht. Mal abgesehen davon, daß es in annähernd 100% der Fälle mehr als einen Weg gibt ein Ziel zu erreichen, mutet es immer ein wenig merkwürdig an, wenn jemand nicht darstellen will, warum er etwas tut. Das kann meines Erachtens nur zwei Gründe haben: Entweder es ist etwas, was nicht legal ist, oder aber es geht um ein "Betriebsgeheimnis" und es soll etwa ein Produkt vermarktet werden, welches eine bestimmte Funktion bietet, welche nicht ausgeplaudert werden soll.

 

In ersterem Fall wäre hier so oder so Schluß - in letzterem Fall wären wir hier lediglich kostenlose Erfüllungsgehilfen, womit sich die meisten hier sicherlich nicht gern identifizieren. Wenn man schon so frei ist zu einer Problemlösung beizutragen, dann möchte man doch meist auch gern wissen, wofür man das denn tut.

 

Du hast einige Hinweise bekommen - vielleicht kommst Du so weiter. Falls nicht, kann ich nur noch einmal anregen zumindest den groben Zweck des Scripts zu nennen, damit man vielleicht Ideen entwickeln kann.

 

Viele Grüße

olc

Link zu diesem Kommentar
Hallo blub,

 

ich habe mein System gerade mal neugestartet und anschließend das Systemevent durchgeguckt aber ich konnte keinen Shutdown type finden, auch keine ID #1074 !

 

Wo hast du diese Information her?

 

(Nur so zur Info: Ich nutze Win XP)

 

 

Description of the Shutdown Event Tracker

Bei meinem w2k3-Server erscheint der Event samt Shutdowntype

Bei XP habe ich es nicht probiert, sollte aber laut Artikel dort ebenfalls protokolliert werden

 

cu

blub

Link zu diesem Kommentar

Hi,

 

ich habe mir die Geschichte noch einmal ein wenig angeschaut, weil mir das keine Ruhe ließ: In der oben schon einmal angesprochenen WMI-Klasse "Win32_OperatingSystem" gibt es die Methoden "Reboot" und "Shutdown", aber bei Methoden kann man natürlich keinen Status auslesen (es sei denn, man führt diese gerade aus).

 

Daher habe ich ein "shutdown -t 300 -r" einmal mit dem ProcMon mitgeschnitten - es werden dabei natürlich so einige Registry Keys gelesen und geschrieben, so etwa auch der "ReasonCode" für das Herunterfahren bzw. Reboot: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability\shutdown.

 

Wenn man nun nach diesem "ReasonCode auf MSDN sucht, landet man hier: System Shutdown Reason Codes (Windows) . Die beiden Links oben sind dann interessant, denn es gibt offensichtlich die Funktion "InitiateSystemShutdownEx", die auch zurück gibt, ob das System heruntergefahren oder neugestartet wird: InitiateSystemShutdownEx Function (Windows) .

 

Ich denke, damit kannst Du etwas anfangen. Nichtsdestotrotz noch einmal die Bestätigung der letzten Posts: Wenn Du etwas genauer sagen könntest, was Du eigentlich erreichen willst, hilft das vielleicht weiter.

 

Viele Grüße

olc

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...