insiderr
Goto Top

Windows Server abmelden bestimmter getrennter Benutzer per Batch

Hallo,
ich suche eine Möglichkeit auf einem Server getrennte Benutzer abzumelden.

Habe schon einige Beispiele mit QUERY SESSION und LOGOFF gefunden.
Diese melden lediglich alle getrennten Benutzer ab.

In meinem Fall will ich alle getrennten Benutzer bis auf Administrator und Chef abmelden.
Manche Nutzer haben triftige Gründe weiterhin angemeldet aber getrennt zu sein. Die meisten aber nicht.

Komme aus der VB/VB.net Welt und könnte mir ein Tool programmieren.
Hätte aber nach Möglichkeit ein kleines Script, welches ich (oder ein weiterer Admin) schnell um andere Benutzer erweitern kann ohne eine EXE zu erstellen.

Habe im Internet folgenden Code gefunden, habe aber Bedenken ihn auf dem Server zu testen, solange da 30 Kollegen angemeldet sind. Habe ja keine IDE mit Debugger.
Kann ihn jemand passend abändern?

@echo off
query session > c:\temp\session.txt
for /f "skip=2 tokens=2,3,4" %%i in (c:\temp\session.txt) DO if not "%%i"=="Geoff" logoff %%j  
del c:\temp\session.txt
pause

Quelle

Danke face-smile

Content-ID: 392882

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

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

emeriks
emeriks 15.11.2018 um 10:20:29 Uhr
Goto Top
Hi,
wäre es nicht viel einfacher bei diesen betreffenden Benutzer die Session Idle Timeouts zu konfigurieren?

E.
insidERR
insidERR 15.11.2018 um 10:50:24 Uhr
Goto Top
Hi E.
Danke für deine Antwort.

Meinst du über die GPU?

Den Gedanken hatte ich auch.
Ich bräuchte das Script auch so mal zwischendurch wenn die Nutzer eine RemoteApp schließen und ich sie dann abmelden muss/will.

Gruß
insidERR
emeriks
emeriks 15.11.2018 um 11:12:40 Uhr
Goto Top
Du meinst sicher GPO?

Das kann man per Server oder per User einstellen. Oder beides in Kombination.
z.B. generelles Timeout für getrennte Sitzungen. Bei ausgesuchten Benutzern am Benutzerobjekt abweichend einstellen, z.B. niemals Timeout.

Dann gibt es da noch einen Trigger für geplante Aufgaben: "Bei Trennung von Benutzersitzung". Damit kann man auch Aktivitäten anhängen.
137846
Lösung 137846 15.11.2018 aktualisiert um 15:17:33 Uhr
Goto Top
Per Batch bestimmten User abmelden
for /f "tokens=1-3" %%a in ('query user ^| findstr /ic:"max.mustermann"') do (if /i "%%c" == "Getr." logoff %%b)  
Alle außer zwei bestimmen abmelden
for /f "tokens=1-3" %%a in ('query user ^| findstr /ilc:"Getr." ^| findstr /ilvc:"max.mustermann" ^| findstr /ilvc:"birgit.musterfrau"') do logoff %%b  
Per PS alle User außer die im Array abmelden
Import-Module RemoteDesktop
Get-RDUserSession | ?{$_.Username -notin @('Administrator','Chef')} | Invoke-RDUserLogoff -Force  
A.
insidERR
insidERR 15.11.2018 um 12:23:16 Uhr
Goto Top
Hi A.
Vielen Dank für den Code face-smile
Wird der Benutzer "max.mustermann" abgemeldet, oder ignoriert? sieht für mich nach abmelden aus.

Idealerweise würde ich gerne alle angemeldeten aber getrennten Benutzer bis auf "max.mustermann" und "birgit.musterfrau" abmelden.
Habe hier an die 50 verschiedene Benutzer die abgemeldet aber nur 2 bis 3 die weiterhin angemeldet(aber getrennt) werden sollen.
137846
137846 15.11.2018 aktualisiert um 12:30:29 Uhr
Goto Top
Zitat von @insidERR:

Hi A.
Vielen Dank für den Code face-smile
Wird der Benutzer "max.mustermann" abgemeldet, oder ignoriert? sieht für mich nach abmelden aus.
Abmelden.
Idealerweise würde ich gerne alle angemeldeten aber getrennten Benutzer bis auf "max.mustermann" und "birgit.musterfrau" abmelden.
Habe hier an die 50 verschiedene Benutzer die abgemeldet aber nur 2 bis 3 die weiterhin angemeldet(aber getrennt) werden sollen.
Dann mach doch, steht doch oben schon fix und fertig! (Für Batch ergänzt)
insidERR
insidERR 15.11.2018 um 12:26:47 Uhr
Goto Top
Hi E.
Ja, sorry. GPO
Ich versuche das weiterhin per Script zu lösen.
insidERR
insidERR 15.11.2018 um 13:31:09 Uhr
Goto Top
Hi A.
vielen Dank für die Ergänzung.

Habe den Code zusammengefügt
@echo off
query session > c:\session.txt
for /f "tokens=1-3" %a in ('query user ^| findstr /ilc:"Getr." ^| findstr /ilvc:"max.mustermann" ^| findstr /ilvc:"administrator"') do logoff %%b  
del c:\session.txt
pause
exit

Bekomme jetzt die Meldung: ""Getr."" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Das steht in der session.txt
 SITZUNGSNAME	BENUTZERNAME		ID	STATUS	TYP	GERŽT 
 services				0	Getr.                       
 console				1	Verb.                       
 rdp-tcp#61	Nutzer1			48	Aktiv                       
 rdp-tcp#25	max.mustermann		52	Getr.                       
 rdp-tcp#23	Nutzer 3		54	Getr.      
>rdp-tcp#53	administrator		95	Aktiv                       
 31c5ce94259d4...			5536	Abh”r.                      
 rdp-tcp				65537	Abh”r.      

System: Windows Server 2016 Std.
137846
Lösung 137846 15.11.2018 aktualisiert um 15:18:51 Uhr
Goto Top
Du hast da ein % Zeichen bei der For-Variablen zu wenig, und das Schreiben der session.txt kannst du komplett weglassen, das brauchst du nicht.
insidERR
insidERR 15.11.2018 um 16:17:56 Uhr
Goto Top
Perfekt,
geht !!

Danke dir "answer" face-smile