meier2009
Goto Top

Per Batch (oder anders) feststellen ob Rechner Aufgeweckt wurde oder schon lief

Hallo Leute,

starte per Aufgabenplanung täglich ein Script welches Daten von einer externen Quelle abruft.
Dazu lasse ich den Computer, falls aus, Aufwecken und schick ihn mit dem Script auch wieder schlafen.

Leider geht der Computer auch in den Schlafmodus wenn ich daran arbeite! Wenn der Rechner aus war (z.B. ich bin Unterwegs oder sowas) soll er danach auch wieder Schlafen gehen, sonst nicht!

Kann ich irgendwie feststellen ob der Rechner aufgeweckt wurde bzw. der Task bei schon laufendem Betrieb aufgerufen wurde??

So könnte ich dann per Variable oder sonstwie das Schlafenschicken verhindern.

Thx und Greetz
meier

Content-Key: 185295

Url: https://administrator.de/contentid/185295

Printed on: April 26, 2024 at 05:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer May 22, 2012 at 09:53:43 (UTC)
Goto Top
Moin,

Prüf doch einfach, wie lange der Rechner schon läuft (uptime ist das stichwort). Läuft er länger als eine bestimmte zeit, ist die Wahrscheinlichkeit hoch, daß der rechner vorher schon an war.

lks
Member: Connor1980
Connor1980 May 22, 2012 at 10:15:44 (UTC)
Goto Top
hi,

ich gehe mal von Windows 7 aus: grundsätzlich hilft ein Blick in die Ereignisprotokolle.

Aber du kannst ganz einfach per Powershellscript die Ereignisse abfragen. Bei Hoch- und Runterfahren sind "Microsoft-Windows-Kernel-General" Eventd mit den IDs 12 und 13 interessant, beim Standby und Ruhezustand weiß ich es nicht, müsstest du rausfinden.

Ich benutze diesen Einzeiler um die letzten 10 Hoch- und runterfahren Ereignisse kurz in einem Fenster anzuzeigen:

Get-EventLog System -Source "Microsoft-Windows-Kernel-General" | where {$_.Instanceid -match "12|13"} | select -first 10  

Das der Rechner sich beim Arbeiten, also wenn du Eingaben machst, in den Ruhezustand/Standby fährt sollte nicht sein und ist ungewöhnlich. Aber auch hier hilft evtl. ein Blick in die Ereignisanzeige.

Grüße
Member: Lochkartenstanzer
Lochkartenstanzer May 22, 2012 at 10:32:07 (UTC)
Goto Top
Zitat von @Connor1980:
Das der Rechner sich beim Arbeiten, also wenn du Eingaben machst, in den Ruhezustand/Standby fährt sollte nicht sein und ist
ungewöhnlich. Aber auch hier hilft evtl. ein Blick in die Ereignisanzeige.

<Kristallkugel>
Ich gehe mal davon aus, daß der TO meinte, sein Skript fährt seinen Rechner gnadenlos herunter, weil das Skript so eingestellt ist. Daher will er vermutlich auch feststellen, ob der Rechner vorher an war, damit das Skript dann eben den Rechner nicht herunterfährt.
</Kristallkugel>

Unter Unixoiden Systemen kann man die Uptime mit
 uptime 
abfragen. Für Windows kann man entweder die passenden Befehele heraussuchen (für verschiedene versionen verschiedene Möglichkeiten), oder einfach ein externes tool wie uptime.exe verwenden.

Sollte das Gerät schon länger als, sagen wir mal, 10 Minuten laufen, war es vermutlich vor dem Skriptstart schon an und wurde nicht aufgeweckt.

lks
Member: Connor1980
Connor1980 May 22, 2012 updated at 11:51:21 (UTC)
Goto Top
Zitat von @Lochkartenstanzer:
> Zitat von @Connor1980:
> ----
Unter Unixoiden Systemen kann man die Uptime mit uptime abfragen. Für Windows kann man
entweder die passenden Befehele heraussuchen (für verschiedene versionen verschiedene Möglichkeiten), oder einfach ein
externes tool wie uptime.exe verwenden.
unter 7 tuts ein
systeminfo | find "Systemstartzeit"
an der cmd
oder ein Blick in den Taskmanager, Reiter Leistung, im Feld System: Laufzeit

Sollte das Gerät schon länger als, sagen wir mal, 10 Minuten laufen, war es vermutlich vor dem Skriptstart schon an und wurde nicht aufgeweckt.

wohl wahr, Wege die zum Ziel führen gibt es viele face-wink

Grüße
Member: meier2009
meier2009 May 22, 2012 at 13:07:30 (UTC)
Goto Top
@ all :

thx für die ersten info´s und es geht um win 7 pro

gute idee per systeminfo bzw uptime, kannte ich nicht

leider Bootet der Rechner ja nicht, ich geh nur in sleepmode per :

powercfg /hibernate off
rundll32.exe powrprof.dll,SetSuspendState

nach dem wiederaufwecken wird das script dann ja weiter ausgeführt, dann kommt :

powercfg /hibernate on

um den hibernate modus wieder zu aktivieren, falls benötigt.

daher zeigt er auch immer nur die systemzeit seit dem letzten Reboot an!
darum würde ich gerne vor diesem abschnitt ebend rausfinden ob die kiste vorher lief oder aus dem sleepmode geweckt wurde!

da ne idee, bisher auch auf basis eurer ansätze, nichts gefunden...

Greetz
Member: Connor1980
Connor1980 May 22, 2012 updated at 13:17:19 (UTC)
Goto Top
Hi,
das von mir erwähnte Powershell script etwas erweitert und mit den hier genannten event IDs (Kernel Power 42, PowerTroubleShooter mit ID 1) versehen, sollte dir die gesuchten Infos bringen. (ungetestet)

Grüße
Member: Lochkartenstanzer
Lochkartenstanzer May 22, 2012 at 13:21:25 (UTC)
Goto Top
Dann schalt die Kiste halt ganz ab, spart sogar Strom. Du kannst sie ja zeitgesteuert und/oder per WOL aufwecken. Dann sollte das mit der uptime greifen.

lks
Member: pieh-ejdsch
pieh-ejdsch May 22, 2012 updated at 15:51:15 (UTC)
Goto Top
moin meier,

wie viel Zeit wird denn vom Aufwecken bis zum Scriptstart benötigt?

Wenn das Aufwecken den Tatsächlich Geplanten Start um eine/wenige Minute(n) Verzögert, dann kannst Du die Startzeit des Scriptes mit der geplanten Startzeit vergleichen.
Wenn die Differenz weniger als eine Minute ist -> dann kein "Schlafen schicken".

Als Alternative erstellst Du zwei Tasks für die gleiche Zeit bzw. bei schwierigkeiten den 1. eine Minute eher.
Task 1 SendCheck: Nicht Nacholen; Nicht Reaktivieren
C:\Windows\system32\cmd.exe /c "timeout /t 300 /NoBreak &waitfor /Si AndNOShutdown"  

Task 2 Batch: Computer Reaktivieren
C:\Windows\system32\cmd.exe /c "waitfor /t 300 AndNOShutdown |find "ERFOLGREICH:" &&echo starte CMD ohne Shutdown ||echo Starte CMD Mit Shudown"  

[edit] ach ich habs ma andersrum gedreht und Find dazu[/edit]
Gruß Phil