
Ich möchte sicherstellen, dass Benutzer abgemeldet werden, wenn sie mit der Arbeit an einem einzelnen, bestimmten Mehrbenutzercomputer fertig sind. Derzeit wechselt der nächste Benutzer einfach den Benutzer und arbeitet weiter, aber wenn viele Benutzer gleichzeitig angemeldet sind und Programme geöffnet haben, scheinen sie Ressourcen zu verbrauchen.
Ist es möglich, Benutzer automatisch von einem Computer abzumelden, wenn sie 24 Stunden lang nicht aktiv waren?
Ist es alternativ möglich, alle außer dem aktuellen Benutzer um Mitternacht abzumelden?
Der Computer befindet sich in einem Windows-Domänennetzwerk. Ich möchte jedoch, dass die automatische Abmeldung nur für diesen einzelnen Computer funktioniert (und ich bin nicht der Netzwerkadministrator).
.
Antwort1
Um getrennte Benutzer abzumelden, während der aktuelle Benutzer verbunden bleibt, kopieren Sie den folgenden Skriptcode in eine CMD-Datei wie „LogOffUsers.cmd“ und führen Sie ihn dann um Mitternacht als Dienst aus:
@echo off
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b
Das Skript funktioniert mit demAbfragebefehlum getrennte Benutzer zu finden, indem Sie nach der Phrase „Disc“ suchen und sie dann abmelden.
Wenn Sie möchten, dass das Skript stattdessen kontinuierlich als Dienst ausgeführt wird und Benutzer abmeldet, wenn diese für einen bestimmten Zeitraum getrennt/inaktiv waren, verwenden Sie stattdessen:
@echo off
:Top
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else %%e GTR 32 (logoff %%b)
choice /T 120 /C 1 /D 1 /N
goto top
Dieses Skript verwendet denselben Abfragebefehl, prüft aber zusätzlich den Abschnitt „IDLE TIME“ der Ergebnisse und meldet den Benutzer ab, wenn die Leerlaufzeit größer als 32 ist („GTR 32“). Dieser Ausdruck kommt zweimal vor, da das Token „IDLE TIME“ an zwei leicht unterschiedlichen Positionen auftreten kann. Dann wartet die Zeile, die mit „choice“ beginnt, 2 Minuten, bevor sie den Vorgang erneut ausführt, indem sie an den Anfang zurückspringt. Sie können den Wert „32“ nach Bedarf erhöhen oder verringern.
GefundenHier.
Antwort2
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else (if %%e GTR 35 (logoff %%b))
Beachten Sie, dass das Obige nur für Leerlaufminuten funktioniert. Sie müssen eine kleine Änderung vornehmen, wenn Sie die Leerlaufstunden nutzen möchten, bevor Sie sich aus der getrennten Sitzung abmelden.
for /f "tokens=1-8 delims=,:/ " %%a in ('query user ^| find /i "disc"') do if %%d GTR 23 (if %%h GTR 2012 (logoff %%b))
Ändern Sie die 23, um die Stunden anzupassen. Das Obige funktioniert bei einer Leerlaufzeit von 24 Stunden oder mehr. %%h 2012 stellt sicher, dass der %%d-Wert eine Stunde und kein Minutenwert ist.
Antwort3
Ich würde nach einer Möglichkeit suchen, die Funktion „Benutzer wechseln“ zu deaktivieren.Daskönnte helfen.