Windows Start/Beenden netzwerkweit protokollieren

CC0 | Pixabay.com

Netzwerkweite, datenbankbasierte Protokollierung von Windows Start/Herunterfahren. Umgesetzt mit Gruppenrichtlinie, Powershell, PHP und MySQL.

Warum?

Windows Start/Laufzeit/Beenden lässt sich auf mehreren Wegen mitverfolgen. Mit dieser Lösung wird clientseitig bei jedem Windows-Start bzw. Beenden ein kleines, per Gruppenrichtlinie definiertes, Powershell-Script gestartet, dass lediglich eine Website mit den entsprechenden Parametern kontaktiert. Die Website beinhaltet ein kleines PHP-Script, dass den Vorgang in eine MySQL-Datenbank speichert und auf Anfrage eine Übersicht ausgibt.

Achtung: Leider konnte ich aus Zeitgründen keine größeren Tests durchführen! Das Powershell-Script funktioniert aber scheinbar nicht auf Windows 7 Systemen! Mit Windows 10 und Windows Server 2012 (R2) konnte ich bislang keine Probleme feststellen!

Webserver

Sofern kein Intranet-Webserver mit PHP und MySQL zur Verfügung steht, bitte herunterladen/installieren (z.B. XAMPP)!

MySQL-Datenbank „startstoplog“ erzeugen

Datenbank „startstoplog“ vorab manuell erzeugen und folgende SQL-Befehle darin ausführen:

PHP-Script: startstoplog\index.php

Das folgende PHP-Script sollte im Pfad http://webserver/startstoplog/ als index.php abgelegt werden. Je nach MySQL-Konfiguration müssen evtl. die Zugangsdaten angepasst werden: $mysqli = new mysqli(„mysqlserver„, „benutzername„, „passwort„, „datenbankname„);

Powershell-Script: startstoplog.ps1

Webserver ändern und vorerst am Desktop abspeichern: Invoke-WebRequest „http://webserver/startstoplog/?type=$type“…

Gruppenrichtlinie

Die zuvor erstellte Powershell-Scriptdatei startstoplog.ps1 wird per Gruppenrichtlinie verteilt und ausgeführt. Der Gruppenrichtlinienverwaltungs-Editor ermöglicht Powershell-Script-Ausführung z.B. über Computerkonfiguration → Richtlinien → Windows-Einstellungen → Scripts (Start/Herunterfahren).

In den Eigenschaften von „Starten„, wird „Powershell-Scripts“ wie folgt konfiguriert:

  • startstoplog.ps1 im Speicherort der Gruppenrichtlinie (Schaltfläche „Dateien anzeigen“) ablegen
  • über Schaltfläche „Hinzufügen…“ mit “ – type start“ einbinden:

Vorgang in den Eigenschaften von „Herunterfahren“ wiederholen, aber „- type stop“ verwenden:

Fehlerbehebung

Mögliche Gründe, warum es nicht auf Anhieb funktioniert:

  • Gruppenrichtlinie ist noch nicht auf dem Client angekommen. gpupdate /force am Client kann den Vorgang beschleunigen.
  • Client wird nicht von Gruppenrichtlinie umfasst (z.B. durch Gruppenrichtlinie-Sicherheitsfilter ausgeschlossen).

Um Gruppenrichtlinien oder Powershell-Probleme auszuschließen, kann das PHP-Script natürlich auch manuell aufgerufen werden:

  • „Start“ loggen: http://webserver/startstoplog/?type=start
  • „Beenden“ loggen: http://webserver/startstoplog/?type=stop

Falls die Seiten auch manuell nicht erreichbar sind, liegt es möglicherweise an einer fehlerhaften Firewall-Konfiguration (z.B. Windows Firewall lässt keine Anfragen an den Apache Webserver durch).

nach oben