Vorgeschichte:
In unserer Firma gibt es mehere Hundert Aussendienstler die alle mit einem Notebook ausgestattet sind. Wenn die in eine Niederlassung kommen wird das Notebook nicht am LAN neu gestartet sondern nur Kabel rein, aus den Standby wecken und gut. Somit startet kein Logonscript, GPOs werden nicht aktualisiert, Patche werden nicht gezogen und unsere Softwareverteilung greift nicht. Die Leute anweisen den PC am LAN einmal zu rebooten bringt nix.
Idee:
Ein Dienst auf den Notebooks, welcher bei EventLogCode 4201 (Netzwerkkabel wurde Angeschlossen) eine Meldung für den User bringt, dass er doch bitte den PC neu startet.
Das Script (bisher):
Die Vorlage war ein VBscript...
$objWMIService=ObjGet("winmgmts:{impersonationLevel=impersonate, (Security)}!\\" & "." & "\root\cimv2")
[/autoit][autoit][/autoit][autoit]$colMonitoredEvents = $objWMIService.ExecNotificationQuery ("Select * from __instancecreationevent where TargetInstance isa 'Win32_NTLogEvent' and TargetInstance.EventCode = '4201' ")
[/autoit][autoit][/autoit][autoit]Do
$objLatestEvent = $colMonitoredEvents.NextEvent
msgbox(1,"","Willkommen im Netz. Bitte starten Sie den Computer neu...")
Until 1
Das Problem:
Das Script läuft in diesem Loop und bringt auch artig die Meldung beim passenden Event. Aber danach beendet sich das Script. Aber es sollte doch weiter in dem Loop laufen, oder nicht? Was ist falsch?
Des weiteren würde ich gerne die Meldung nur bringen, wenn die IP auch zum Firmennetz passt. Das heimische DSL sollte die Meldung nicht bringen.
Auch sollte die Meldung nicht kommen wenn der letzte Reboot wenigen als 12 Stunden her ist.
Meine Frage:
Wer kann mir sagen was an meine Logik falsch ist?
Und wer kann mir beim realisieren der Abfrage 'Wie lang ist der letzte Reboot her' helfen?
Danke