exxe
Mitleser
Hallo Forengemeinde,
ich stehe hier vor einem Problem, das meine Kentnisse im Bereich Batch-Scripting etwas überschreitet.
Aufgabe:
Beenden einer Session am Terminalserver per Batch
Lösungsweg:
Aufruf über die Kommandozeile mit
(das funktioniert bei bekannter Session-ID und manueller Eingabe auch wunderbar).
Problem:
Da die Session-ID erst mal nicht bekannt ist und sich auch jedesmal ändert, versuche ich diese auszulesen und sie per Script an die Stelle von [session_id] zu übergeben.
Folgenden Code habe ich mir bis hierhin zurechtgebastelt:
Das funktioniert zur Überprüfung der übergebenen Werte soweit erst mal einwandfrei, die Ausgabe hierzu:
Hier beendet sich das Script und die Welt ist soweit in Ordnung.
Nun hab ich ja in obigem Beispiel die ID = %3 und kann doch eigentlich damit weiterarbeiten:
Und hier fängt mein Problem an, die Ausgabe bei oben genanntem Code ist:
Das Script läuft hier endlos weiter und muss abgebrochen werden.
Des weiteren führt es die gewünschte Abmeldung nicht durch, die Sitzung ist weiterhin aktiv.
Leider habe ich von der Materie zu wenig Ahnung, als dass ich hier den Fehler finde, geschweige denn irgendwo einen Ansatz zur Fehlersuche habe.
Daher hoffe ich, dass mir hier jemand weiterhelfen kann.
ich stehe hier vor einem Problem, das meine Kentnisse im Bereich Batch-Scripting etwas überschreitet.
Aufgabe:
Beenden einer Session am Terminalserver per Batch
Lösungsweg:
Aufruf über die Kommandozeile mit
Code:
logoff [session_id] /SERVER:servername
Problem:
Da die Session-ID erst mal nicht bekannt ist und sich auch jedesmal ändert, versuche ich diese auszulesen und sie per Script an die Stelle von [session_id] zu übergeben.
Folgenden Code habe ich mir bis hierhin zurechtgebastelt:
Code:
@ECHO OFF
ECHO Session suchen . . .
FOR /F "TOKENS=1,2* skip=1" %%a IN ('QUERY USER username /SERVER:servername') DO CALL :SessionKill %%a %%b %%c
GOTO :EOF
:SessionKill
echo Login: %1
echo Name: %2
echo ID: %3
QUERY USER %2 /SERVER:servername
Das funktioniert zur Überprüfung der übergebenen Werte soweit erst mal einwandfrei, die Ausgabe hierzu:
Code:
Session suchen . . .
Login: username
Name: ica-tcp#3
ID: 5
BENUTZERNAME SITZUNGSNAME ID STATUS LEERLAUF ANMELDEZEIT
username ica-tcp#3 5 Aktiv 1:59 13.02.2012 12:22
Hier beendet sich das Script und die Welt ist soweit in Ordnung.
Nun hab ich ja in obigem Beispiel die ID = %3 und kann doch eigentlich damit weiterarbeiten:
Code:
@ECHO OFF
ECHO Session suchen . . .
FOR /F "TOKENS=1,2* skip=1" %%a IN ('QUERY USER username /SERVER:servername') DO CALL :SessionKill %%a %%b %%c
GOTO :EOF
:SessionKill
echo Login: %1
echo Name: %2
echo ID: %3
LOGOFF %3 /SERVER:servername
Und hier fängt mein Problem an, die Ausgabe bei oben genanntem Code ist:
Code:
Session suchen . . .
Login: username
Name: ica-tcp#3
ID: 5
Login: 5
Name: /SERVER:servername
ID:
Login: /SERVER:servername
Name:
ID:
Login: /SERVER:servername
Name:
ID:
Login: /SERVER:servername
Name:
ID:
.
.
.
Das Script läuft hier endlos weiter und muss abgebrochen werden.
Des weiteren führt es die gewünschte Abmeldung nicht durch, die Sitzung ist weiterhin aktiv.
Leider habe ich von der Materie zu wenig Ahnung, als dass ich hier den Fehler finde, geschweige denn irgendwo einen Ansatz zur Fehlersuche habe.
Daher hoffe ich, dass mir hier jemand weiterhelfen kann.