NEWS
Ist ein Win User gerade aktiv?
-
Hallo,
Ich mach's kurz:
Ziel ist es, einige Geräte automatisch einzuschalten, wenn ein User gerade an einem PC eingeloggt ist.
Ich habe bereits den "Windows-Control" Adapter entdeckt in Kombination mit dem "GetAdmin.exe" Tool.
So recht werde ich aber noch nicht schlau daraus.
Theoretisch könnte man ja das Windows Kommando "query user" nutzen um alle aktiven Nutzer zu listen. Natürlich mit ein wenig string handling.Aber wie kann ich den Befehl nun remote ausführen und den Consolenoutput verarbeiten?
Oder gibt es überhaupt eine elegantere Methode?
lG
-
@thirty8763
Vielleicht geht es auch so: Die Windows-Aufgabenplanung nutzen, als Trigger "bei Anmeldung" wählen und ein Powershell-Skript starten, welches einen Datenpunkt im iobroker setzt.Keine Ahnung, ob das so läuft, aber auf den ersten Blick sieht es wie die einfachere Lösung für mich aus.
-
@marc-berg said in Ist ein Win User gerade aktiv?:
@thirty8763
Vielleicht geht es auch so: Die Windows-Aufgabenplanung nutzen, als Trigger "bei Anmeldung" wählen und ein Powershell-Skript starten, welches einen Datenpunkt im iobroker setzt.Keine Ahnung, ob das so läuft, aber auf den ersten Blick sieht es wie die einfachere Lösung für mich aus.
Jup...hab das gerade mal getestet. Das geht. Voraussetzung: Das Powershelll Script muss laufen dürfen (bypass policy) und es ist z.B. der Simple API Adapter installiert. Dann kann man jeden Login (egal ob nach dem einschalten, Benutzer Wechsel oder wenn der Rechner aus dem Stromsparmodus kommt) registrieren und via script darauf reagieren.
Ich hab dazu unter c:\temp eine loginscript.ps1 Datei angelegt. In dieser Datei steht:
$msg = $env:UserName Invoke-WebRequest -Uri "http://192.168.0.177:8087/set/0_userdata.0.1_Test.Username?value=$msg"
Zeile1: Hol den Username aus den Umgebungsvariablen
Zeile2: Frage aus Powershelll herraus die URL "http://192......." ab.In Zeile 2 bitte nicht vergessen die IP (192.168.0.177) gegen die korrekte zu tauschen.
Dann in der Aufgabenplanung (Win-Taste drücken und einfach "Aufgabenplanung" tippen) starten und links auf "Aufgabenplanungsbibliothek" klicken. Dann rechts auf "Einfache Aufgabe erstellen" klicken. In der Aufgabe dann als Trigger wie Marc Berg schon sagte "Bei Anmeldung" auswählen und bei Aktionen "Programm starten" auswählen. Ich hab beim Programm das reinkopiert:
PowerShell.exe -ExecutionPolicy Bypass -File c:\temp\logonscript.ps1
Weil dann die ExecutionPolicy nicht großartig verändert werden muss.
Nicht vergessen: Im IOBroker hab ich unter 0.Userdata.0.1_Test den Datenpunkt Username angelegt.
Dann ging es. Zum testen kann man in der POwershell ISE das obige Powershell manuell ausführen und schauen ob alles wie gewünscht läuft.
Im IOBroker muss der Adapter "simple API" laufen.
In Zeile 2 wird dann die Simple API vom IOBroker angesprochen.
Greets, Fun, Bernd
-
Boah....liest sich kompliziert
Ist aber in der Tat recht einfach zu machen. Wenn's klemmt Frag nochmal.
Grüße
-
@bernd33-1
Super, das alles ist mir eine große Hilfe.
Dankeschön!