73329
Goto Top

Terminal Server Force Logoff nach Ablauf der Anmeldezeit

Die Anmeldezeiten die Microsoft zur Verfügung stellt sind ja schön und gut, nur wie immer nicht ganz fertig gedacht…

Problem:
User meldet sich an einem W2k3 TS an wobei er dies nur zwischen 07:00 bis 14:00 darf. Ist er aber ab 14:00 immer noch angemeldet kann er uneingeschränkt weiterarbeiten.

Ziel:
User die um 14:00 immer noch angemeldet sind sollen automatisch abgemeldet werden (schön wäre eine Gnadenfrist von weiteren 5min mit einer Nachricht – muss aber nicht sein!). Der kniff an der ganzen Sache ist, dass es spezialuser geben könnte die länger arbeiten wollen und somit kommt ein „globaler“ logoff oder shutdown nicht in frage.


Meine Infos die ich Zusammengeragen habe, jedoch noch nicht so funktionieren wie ich will:

- net accounts /forcelogoff:5
Ergebnis: User kann weiterarbeiten (selbst wenn der befehl mit /domain erweitert wird). Was steckt hinter dem Befehl?!

- Skript das erst die angemeldeten User Checkt, die Erlaubte anmeldezeit prüft und einen Logoff absetzen würde:
(Meine Domäne: TestDom)
@echo off

rem Wochentag bestimmen
FOR /F "tokens=1,2,3 delims=." %%a in ('echo %date%') do set yy=%%c & set mm=%%b & set dd=%%a  

set /a "TwoDigitYearMax=2038%%1000"  
if 1%yy% LSS 200 if 1%yy% LSS 1%TwoDigitYearMax% (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1

If %dow% equ 1 set "WoTa=Montag"  
If %dow% equ 2 set "WoTa=Dienstag"  
If %dow% equ 3 set "WoTa=Mittwoch"  
If %dow% equ 4 set "WoTa=Donnerstag"  
If %dow% equ 5 set "WoTa=Freitag"  
If %dow% equ 6 set "WoTa=Samstag"  
If %dow% equ 7 set "WoTa=Sonntag"  

rem eigentlicher Logoff Skript
for /f "skip=1 delims=\ tokens=2" %%i in ('psloggedon.exe -x -l ^| findstr "TestDom"') do (  
	echo Username: %%i
	for /f "tokens=3 delims= " %%w in ('net user %%i /domain ^| findstr /i "%WoTa%"') do (  
		if /i "%%w" == "%WoTa% 07:00 - 14:00" echo shutdown /a /f /t 30  
	)
	echo Naechster Benutzer
)
Das Problem ist, dass nur 1 angemeldeten User angezeigt wird. Hab ich eventuell noch einen Fehler in der Schlaufe?

- Force Disconnect via GP
Einfach nur unbrauchbar! Trennt nur die SMB verbindungen und meldet den Benutzer nicht automatisch ab!!!

- Logonskript für den User der sich am TS anmeldet, das einen Geplanten Task hinzufügt der um 14:00 gestartet wird. Im Skript würde so was stehen wie:
if C:\Dokumente und Einstellungen\User1\spezial.txt exist goto exitt
logoff
:exitt
exit
Wurde noch nicht getestet da das Ziel ist das ganze über die Anmeldezeiten zu steuern und nicht mit einem Textfile dass man immer erstellen muss für spezialuser die länger arbeiten wollen. (wäre aber eine denkbare Notlösung…)


Soviel zu meinen vorarbeiten…
Mir ist eigentlich alles recht was die Lösungsansätze betrifft– verstekte GPO‘s, DOS- VBS- PS-Skripts, alles…


MERCI

Content-Key: 129581

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

Printed on: April 16, 2024 at 23:04 o'clock

Member: DerWoWusste
DerWoWusste Nov 17, 2009 at 22:18:23 (UTC)
Goto Top
Ich hab zwar zu diesem sicher uralten und 100fach irgendwie gelösten Problem gerade keinen Link parat, aber immerhin ein Skript, das funktionieren solte und open source ist.
http://sourceforge.net/projects/trbdk3netlogoff/
Mitglied: 73329
73329 Nov 18, 2009 at 10:30:23 (UTC)
Goto Top
Merci für dein Feedback, werde ich gleich ausprobieren...
Mitglied: 73329
73329 Nov 18, 2009 at 13:50:05 (UTC)
Goto Top
Könntest du mir vieleicht kurz sagen wozu und was für Werte auf den Zeilen 4-6 gesetzt werden muss?
' declare the required variables  
Dim arrbytLogonHours(20)
Dim arrintLogonHoursBits(167)
Set objUser = GetObject("LDAP://" & strUserDN)  

Wenn ich das skript einfach so laufen lasse kriege ich einen Fehler (Debug mit "VbsEdit"):
Line: 24
Column: 1
Error: Die Verzeichniseigenschaften wurden nicht im Cache gefunden.
Code: 8000500D
Source: Active Directory


MERCI
Mitglied: 73329
73329 Nov 18, 2009 at 14:12:26 (UTC)
Goto Top
...zudem sieht es aus als ob das skript nicht für TerminalServer geschrieben wurde, da der Computername abfragt und nicht die session ID des Users. Trotzdem ist es auf jeden fall ein guter anhaltspunkt auf dem ich aufbauen kann.

Falls du noch weitere lösungen kennst - seeehr gerne :D
Member: DerWoWusste
DerWoWusste Nov 18, 2009 at 17:20:52 (UTC)
Goto Top
Zur weiteren Hilfe bin ich nicht firm genug. Ich hab dies Skript nur in der Hinterhand behalten, falls ich es mal brauchen sollte. Im ReadMe bietet der Programmierer eine Mailadresse für Hilfestellung an.