Tool zum Trennen von Usersessions auf Terminalserver ohne Adminrechte
Hallo,
ich suche ein Tool, was folgendes macht.
Wir haben ein Software, die auf einem Terminalserver (Windows) läuft. Ab und zu bleiben dies Sessions hängen, der User muss "hinausgekickt" werden. Das kann auch jemand anders als der einzige Admin machen, allerdings will der Admin nicht das Passwort verraten.
Gibt es ein Tool, welches man anderen (ausgewählten) User zur Verfügung stellen kann, welches das macht? Die Zugangsdaten müssten im Tool hinterlegt sein oder sehe ich das falsch?
Danke für eure Mühe.
Beste Grüsse
Stefan
ich suche ein Tool, was folgendes macht.
Wir haben ein Software, die auf einem Terminalserver (Windows) läuft. Ab und zu bleiben dies Sessions hängen, der User muss "hinausgekickt" werden. Das kann auch jemand anders als der einzige Admin machen, allerdings will der Admin nicht das Passwort verraten.
Gibt es ein Tool, welches man anderen (ausgewählten) User zur Verfügung stellen kann, welches das macht? Die Zugangsdaten müssten im Tool hinterlegt sein oder sehe ich das falsch?
Danke für eure Mühe.
Beste Grüsse
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 354097
Url: https://administrator.de/forum/tool-zum-trennen-von-usersessions-auf-terminalserver-ohne-adminrechte-354097.html
Ausgedruckt am: 01.05.2025 um 16:05 Uhr
17 Kommentare
Neuester Kommentar

Geplanten Task für User deployen (Rechte entsprechend im Task setzen) welcher die Aufgabe übernimmt, und dann vom User starten mit Verknüpfung
schtasks /run /TN "Name des Tasks"

Kannst du doch, ein Task kannst du auf Zuruf starten! Und dieser wird dann mit den im Task hinterlegten Credentials ausgeführt.
Hi.
So einfach geht es leider nicht. Wenn ein Task mit hohen Rechten läuft, hat der User kein Recht, ihn zu starten. In Windowsversionen vor Windows 10 konnte man simpel die Rechte auf die Taskdatei anpassen - dies funktioniert nicht mehr. Abhilfe siehe: Nutzer zur Ausführung von fremden Tasks berechtigen - Windows 10 kann es offenbar nicht
Edit: dieses kompliziertere Triggering ist also nur auf Win10/Server 2016 nötig, bei den Vorversionen reicht die Anpassung der ACL des Tasks.
So einfach geht es leider nicht. Wenn ein Task mit hohen Rechten läuft, hat der User kein Recht, ihn zu starten. In Windowsversionen vor Windows 10 konnte man simpel die Rechte auf die Taskdatei anpassen - dies funktioniert nicht mehr. Abhilfe siehe: Nutzer zur Ausführung von fremden Tasks berechtigen - Windows 10 kann es offenbar nicht
Edit: dieses kompliziertere Triggering ist also nur auf Win10/Server 2016 nötig, bei den Vorversionen reicht die Anpassung der ACL des Tasks.

Man könnte dem User auch granulare Rechte nur zum Logoff auf die RD Sessions geben
Configure Permissions for Remote Desktop Services Connections
Und dann den User mit Invoke-RDUserLogoff (Powershell) oder cmd-Skript die Session trennen lassen.
Configure Permissions for Remote Desktop Services Connections
Und dann den User mit Invoke-RDUserLogoff (Powershell) oder cmd-Skript die Session trennen lassen.
Zitat von @134464:
Man könnte dem User auch granulare Rechte nur zum Logoff auf die RD Sessions geben
Configure Permissions for Remote Desktop Services Connections
Und dann den User mit Invoke-RDUserLogoff (Powershell) oder cmd-Skript die Session trennen lassen.
Mit diesen Rechten sollte der betreffende "Hilfs-Admin" dann auch einfach über den Taskmanager einen Benutzer abmelden können.Man könnte dem User auch granulare Rechte nur zum Logoff auf die RD Sessions geben
Configure Permissions for Remote Desktop Services Connections
Und dann den User mit Invoke-RDUserLogoff (Powershell) oder cmd-Skript die Session trennen lassen.

Hier mal getestet (Server 2012R2 TS), funktioniert mit einem eingeschränkten User dann problemlos dem Admin seine RDP Session unter dem Hintern wegzuziehen
.
Powershell Äquivalent des Befehls von @DerWoWusste
Powershell Äquivalent des Befehls von @DerWoWusste
gwmi -namespace root\CIMV2\TerminalServices Win32_TSPermissionsSetting | ?{$_.TerminalName -eq 'RDP-TCP'} | %{$_.AddAccount('DOMAIN\userxyz',2)}

Zitat von @DerWoWusste:
Und wie ist es mit shadowing, funktioniert das auch ohne Rückfrage? Das wäre schlecht. Ich meine, das genannte Kommando erlaubt alles.
Das funktioniert auch, aber nur solange dies die RDP Policy des Systems erlaubt "ohne Rückfrage" zu shadowen, ansonsten kommt beiUnd wie ist es mit shadowing, funktioniert das auch ohne Rückfrage? Das wäre schlecht. Ich meine, das genannte Kommando erlaubt alles.
mstsc /shadow <id> /noConsentPrompt /control
Na denn.
Somit gibt es zwei funktionierende Wege. Ich würde den mit dem Task bevorzugen, da das näher an "least privilege" dran ist.
Also: Task erstellen mit geeigneter Batch, Task Trigger: Application Even Log, ID 999
Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
Somit gibt es zwei funktionierende Wege. Ich würde den mit dem Task bevorzugen, da das näher an "least privilege" dran ist.
Also: Task erstellen mit geeigneter Batch, Task Trigger: Application Even Log, ID 999
Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
write-eventlog -logname Application -source SceCli -eventID 999 -entrytype Information -message "'This was created to trigger the KickRaus task'"

Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
Das geht nur mit Admin-Rechten, bzw. man müsste das dem User auch erst explizit erlauben.Somit gibt es zwei funktionierende Wege. Ich würde den mit dem Task bevorzugen, da das näher an "least privilege" dran ist.
Also: Task erstellen mit geeigneter Batch, Task Trigger: Application Even Log, ID 999
Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
Und wie willst Du darüber steuern, welcher Benutzer abgemeldet werden soll?Also: Task erstellen mit geeigneter Batch, Task Trigger: Application Even Log, ID 999
Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
write-eventlog -logname Application -source SceCli -eventID 999 -entrytype Information -message "'This was created to trigger the KickRaus task'"

Zitat von @emeriks:
Stimmt nochmal verifiziert, dann ist die Doku aufDas geht nur mit Admin-Rechten, bzw. man müsste das dem User auch erst explizit erlauben.
Nein. Jeder Benutzer kann zumindest ins Application Log schreiben.https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
nicht richtig
To use Write-EventLog, start Windows PowerShell by using the Run as administrator option.
@specht's
@emeriks
Das geht nur mit Admin-Rechten, bzw. man müsste das dem User auch erst explizit erlauben.
Glücklicherweise auch ohne (zumindest ins Applicationlog). Naja, über Powershell geht es ohne - verwendet man Batch mit der eventcreate.exe und tut das Selbe, meint Windows, Adminrechte zu brauchen. Niedlich.@emeriks
Und wie willst Du darüber steuern, welcher Benutzer abgemeldet werden soll?
Ja, berechtigter Einwand. Man könnte per Skript alle Getrennten abmelden:qwinsta |findstr Getr >%temp%\discon1.txt
findstr /v services %temp%\discon1.txt>%temp%\discon2.txt
for /f "tokens=1-3" %%a in (%temp%\discon2.txt) do logoff %%b