Im Taskmanager angezeigten Benutzerstatus abfragen

Hallo,

zur Steuerung eines Anmeldescriptes möchte ich gern den Status aller lokal angemeldeten Benutzer (im TM unter „Benutzer“ - Angemeldet bzw. Verbindung getrennt) abfragen/auslesen und in einer Batchdatei auswerten. If %username%==… funktioniert nicht, da alle angeldeten B. „wahr“ zurückgeben, wenn der Task startet (1x pro Minute).

Es soll in Abhängigkeit des B.namens eine offene oder eben eingeschränkte hosts-Datei aktiviert werden (xcopy …)

LG, Masl

Bitte bei anderen Kollegen nachfragen!
Beste Grüße
Peter

Eine entsprechende Funktion, die genau das beschriebene Verhalten des Taskmanagers widergibt, habe ich für die Kommandozeile nicht gefunden.
Der gewünschte Zweck sollte aber mit folgendem Befehl zu erreichen sein:

tasklist /v /fi „Imagename eq wfshell.exe“

Damit werden alle Benutzer angezeigt, die auch im Taskmanager angezeigt werden. Wenn der Sitzungsname fehlt, ist der Benutzer nicht aktiv.

Dieser Befehl sollte dann in einer Batchdatei stehen, die per schtasks periodisch aufgerufen wird.

Das Ergebnis muss in der Batchdatei allerdings noch weiterverarbeitet werden, also erst einmal manuell testen, ob der Befehl die gewünschten Informationen auf dem Gerät liefert. Bei Bedarf liefere ich den Rest nach.

LG, Michael

Hey,

ich hab ein wenig gegrübelt und gegoogelt, aber bis jetzt noch nichts gefunden. Was ich aber noch fragen wollte: Mit dem Satz „alle angeldeten B. „wahr“ zurückgeben“ meinst du, das alle registrierten Benutzer wahr zurückgeben, oder?

Grüße

leider ist das nicht mein Fachgebiet.

hi,

ich konnte auch nix finden beim googlen. darum hab ich ja hier gefragt.

die u.variable liefert dummerweise bei allen eingeloggten benutzern den betreffenden benutzernamen, daher liefert eine abfrage, die eine übereinstimmung erfordert, zwangsläufig „wahr“, weshalb die zuerst abgefragte variante den ausschlag gibt - auch wenn die zweite ebenfalls korrekt ist.

ich hatte gehofft, mit irgend einer rundll-geschichte und nem vb-script weiterzukommen… :frowning:

für den start einer batch ohne dos-prompt gehts ja auch.

df

ffgn

hi michael,

welchen charakter haben denn die resultate? 0, 1, 2,…? „wahr“, „falsch“…?

hi mich

Die Ausgabe ist eine Textdatei, für jeden Benutzer eine Zeile, also z.B.:
Abbildname PID Sitzungsname Sitz.-Nr. Speichernutzung Status Benutzername CPU-Zeit Fenstertitel
========================= ======== ================ =========== =============== =============== ================================================== ============ ========================================================================
wfshell.exe 2308 ICA-tcp#1 1 7.060 K Wird ausgefhrt myDomain\myBenutzername1 0:00:00 ICA Seamless Host Agent
wfshell.exe 1912 2 7.144 K Unbekannt myDomain\myBenutzername2 0:00:00 Nicht zutreffend
wfshell.exe 11084 RDP-Tcp#35 14 4.624 K Unbekannt myDomain\myBenutzername3 0:00:00 Nicht zutreffend
daraus folgt: Benutzer 1 und 3 sind aktiv, Benutzer 2 nicht.

Diese Datei könnte man dann weiter per Batchdatei zerlegen, bis man das gewünschte Ergebnis hat.
Wie schon geschrieben, erst testen, ob es soweit funktioniert, sonst braucht man gar nicht weitermachen.
Ich habe das auf einem Microsoft Windows Server 2003 getestet.

… welchen charakter haben denn die resultate? 0, 1, 2,…?
„wahr“, „falsch“…?

Mir fehlen da Rahmenbedingungen.
Dos erlaubt zunächst nicht, mehrere User gleichzeitiug anzumelden.
Über Remote Access kannst Du auf den Rechner aber zugreifen.
Das gilt auch unter Windows, wo Du Teile Deiner Rechnerresourcen für Benutzer im Netz freigeben kannst.
Win Server wird wohl eine gleichzeitige Anmeldung erlauben.
Unter Windows hast Du aber eigentlich auch solche Bedingungen, laufen doch verschieden priorisierte Dienste auch mit eigenen Rechten im Hintergrund.
Wenn möglich, sollte so etwas mithilfe von 4Dos für Windows zu erledigen sein.

Es geht unter WXP mit der schnellen B.umschaltung! Wenn beide angemeldet sind, hat immer nur einer im TM den Status „verbunden“. Diesen Wert gilt es auszulesen und in einer Batch/VBS auszuwerten.

hi micha,

das ergebnis bekomme ich nach kleinen änderungen der tasklist-abfrage hin, (info: blabla…) falls der abgefragte user NICHT als connected gemeldet wird.

kannst du mir ad hoc einen ansatz für die auswertung einer textausgabe in einer batch geben? dachte da an schreiben in eine temp txt-datei, welche dann per batch auf eine feste zeichenfolge hin durchsucht werden kann…

Die Ausgabe eines Befehls in eine Datei bekommt man per Ausgabeumleitung hin:

tasklist %parameter% >"%temp%\auswertung.tmp"

Eine Auswertung einer Datei auf eine bestimmte feste Zeichenfolge geht z.B. so:

type „%temp%\auswertung.tmp“|find „%suchstring%“>nul
if %errorlevel% == 0 echo „%suchstring%“ gefunden

Das ist jetzt natürlich recht allgemein gehalten und stellt nur einen Ansatz für die Problemlösung dar.

Falls du noch weitere Hilfe brauchst, einfach nachfragen. Am Besten stellst du deine bisherige Batchdatei vor und beschreibst das verbleibende Problem.

Viel Erfolg,
Michael

moin micha,

das type-find-echo war genau was ich noch gesucht hatte! echt cool, vielen dank!

ich wusste zwar noch, DASS es geht, aber a) nicht wie und b) dass es ziemlich tricky ist was die syntax angeht.

Werds mal probieren, falls es nicht klappt, weiß ich ja nun, wer mir helfen kann… :smile:

mn

Hallo,
ein Vorschlag:

@echo off
FOR /F „tokens=3“ %%a IN (‚netsh diag show computer /v ^| FIND /i „username“‘) DO ECHO %%a

ein schönes Adventswochenende wünscht
Arne

Es geht unter WXP mit der schnellen B.umschaltung! Wenn beide
angemeldet sind, hat immer nur einer im TM den Status
„verbunden“. Diesen Wert gilt es auszulesen und in einer
Batch/VBS auszuwerten.

Hallo Arne,

Vielen dank für den Tipp! Ich habe zwar keine Ahnung, was steht, aber ich vertrau dir da mal…

Iich probier’s die Tage mal aus und melde mich ggf. nochmal.

LG, Marcel

Hallo,
ein Vorschlag:

@echo off
FOR /F „tokens=3“ %%a IN (‚netsh diag show computer /v ^| FIND
/i „username“‘) DO ECHO %%a

ein schönes Adventswochenende wünscht
Arne