l0c4lh0st
Goto Top

Auslesen des aktuellen Consolen Users

Hallo liebe Administratoren,

ich hoffe mal ihr könnt mir helfen. Habe aktuell ein Problem mit einem Batch, dass ich gerade schreibe.

Es geht darum, den Benutzernamen des aktuellen Consolen Users herauszufinden.

Das Problem ist vielleicht ganz einfach zu lösen, aber ich komme nicht drauf.

Und zwar möchte ich nur den Benutzernamen haben, ohne Leerzeichen oder andere Zeichen. Klar könnte ich die Variable mit ":~0,20" auf die ersten 20 Zeichen kürzen, aber es kann durchaus vorkommen, dass Benutzer mit mehr als 20 Zeichen existieren. Außerdem hätte ich dann wieder die Leerzeichen mir drin.

Hier ist das Script:

@echo off
setlocal
set qry=query session console
set fnd=findstr /I /L /C:"console"  
for /f "Tokens=1*" %%u in ('%qry%^|%fnd%') do (  
 set vsn=%%v
)
@echo %vsn%
endlocal

Der Benutzername des aktiven Benutzers soll hinterher in der Variablen "vsn" stehen

Gruß
Alex

Content-ID: 217939

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

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

Penny.Cilin
Penny.Cilin 26.09.2013 um 15:48:21 Uhr
Goto Top
Hallo Alex,

warum so umständlich? Nehme QWINSTA.


Gruss Penny.
AnonBorg
AnonBorg 26.09.2013 um 16:00:16 Uhr
Goto Top
Hi,

%username%
mach mal ein "set" auf der console, dann siehst Du alle Systemvariablen die Dir zur Verfügung stehen.

echo %username% sollte den aktuellen Namen ausgeben, auch wenn die console mit run as gestartet wurde.


René
L0c4lh0sT
L0c4lh0sT 26.09.2013 um 16:50:47 Uhr
Goto Top
Das funktioniert leider nur, wenn man selbst der aktuelle Benutzer ist. Wenn das Script aber als Automatisierter Task mit Systemrechten ausgeführt wird, bringt mir das nichts ;) Danke trotzdem.

@penny.cillin
Gib mal in einer cmd "QWINSTA /?" ein. Na was kommt? Richtig "Query session". Das ist ein und der selbe befehl. Bringt mich hier auch nicht weiter, da nur der Benutzername in der Variablen stehen soll. Aber an sich hast du recht und ich könnte anstatt "query session console" auch "qwinsta console" nehmen face-smile
Auch dir natürlich ein Danke

Gruß
Alex
Endoro
Endoro 27.09.2013 um 00:54:28 Uhr
Goto Top
Hi, das sollte es tun (nicht an veralteten Windows Versionen getestet):
@echo off &setlocal
for /f "tokens=*delims=>" %%a in ('query user^|find /i "console"') do set "user=%%a"  
set "right=console%user:*console=%"  
call set "user=%%user:%right%=%%"  
set "user=%user: =%"  
echo "%user%"  
lg.
L0c4lh0sT
L0c4lh0sT 27.09.2013 um 07:59:20 Uhr
Goto Top
Vielen Dank Endoro das funktioniert super!

Wusste doch das es irgendwie möglich ist.
Könntest du mir noch erklären was genau passiert bei dem Script?`
Also ich mein jetzt nicht die elementaren sachen wie setlocal oder die FOR-Schleife.

Aber gerade Zeile 3 und 4 interessieren mich doch sehr. Habe ich so noch nicht gesehen.