Rückgabe eines CMD Befehls in eine Variable speichern
Moin moin,
Ich versuche grade alle aktiven Sitzungen an einem Terminal Server auszulesen. Den entsprechenden CMD Befehl hab ich inzwischen auch schon gefunden. Allerdings brauch ich dir Rückgabe von dem Befehl in meinem VB Script, weil ich die Ausgabe noch auswerten muss.
Gibt es einen vbs Befehl der das gleiche tut wie der cmd befehl "qwinsta" bzw. gibt es die Möglichkeit die Ausgabe des Befehls in meinen Script zu holen?
Danke schon mal vorab.
Ich versuche grade alle aktiven Sitzungen an einem Terminal Server auszulesen. Den entsprechenden CMD Befehl hab ich inzwischen auch schon gefunden. Allerdings brauch ich dir Rückgabe von dem Befehl in meinem VB Script, weil ich die Ausgabe noch auswerten muss.
Gibt es einen vbs Befehl der das gleiche tut wie der cmd befehl "qwinsta" bzw. gibt es die Möglichkeit die Ausgabe des Befehls in meinen Script zu holen?
Danke schon mal vorab.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 155232
Url: https://administrator.de/forum/rueckgabe-eines-cmd-befehls-in-eine-variable-speichern-155232.html
Ausgedruckt am: 12.04.2025 um 12:04 Uhr
10 Kommentare
Neuester Kommentar
Oh, sorry, Du hast Recht!!!
Ich war im falschen Film. Tut mir leid. Bei VB muß ich passen!
Aber wenn VB keine solche Funktion bietet, würde ich vorschlagen, die Ausgabe in eine (temporäre) Datei umzulenken und diese Datei mit VBScript lesen und bearbeiten.
Für das Umlenken müßtest Du dann nur ein qwinsta >qwinsta.log anhängen - es sei denn VB liefert noch elegantere Techniken.
Markus
Ich war im falschen Film. Tut mir leid. Bei VB muß ich passen!
Aber wenn VB keine solche Funktion bietet, würde ich vorschlagen, die Ausgabe in eine (temporäre) Datei umzulenken und diese Datei mit VBScript lesen und bearbeiten.
Für das Umlenken müßtest Du dann nur ein qwinsta >qwinsta.log anhängen - es sei denn VB liefert noch elegantere Techniken.
Markus
Wir haben auch Citrix (XenApp) im Einsatz, allerdings von einem Dienstleister konfiguriert. Ich kann nur sagen, dass bei veröffentlichten Anwendungen das volle Programm durchlaufen wird incl. unserer Anmeldescripts. Vielleicht ist da ja "nur" eine Konfigurationssache.
Echo off schaltet die Anzeige der Aufruf aus
Die Ausgabe von qwinsta wird von Find untersucht.
- /i deaktiviert die Beachtung Groß/Kleinschreibung
<...> mußt Du ersetzen mit dem suchenden String.
Rückgabewert ist
0 = gefunden
1 = nicht gefunden
Du kannst <...> auch durch ein %1 ersetzen und den Suchstring als Parameter mitgeben. Das ist es variabel. Der Aufruf würde dann so lauten:
<MeineBatchdatei>.cmd <mein Suchtext>
Markus
Ursprünglich hatte ich vor zu überprüfen ob der Benutzer bereits an dem TS angemeldet ist oder ob es der erste anmelde versuch ist.
Ich behaupte mal, dass Du das aber einfacher haben kannst. Ich kann's aber nur unter DOS bzw setzen wir für das Anmeldescript Kix32 ein. Hier habe ich die Möglichkeit, mit Run bzw. Shell eine Batch zu starten und einen Errorlevel abzufragen.@echo off
qwinsta.exe | find /i "<mein Suchtext>" >NUL:
echo Errorlevel ist %errorlevel%
Die Ausgabe von qwinsta wird von Find untersucht.
- /i deaktiviert die Beachtung Groß/Kleinschreibung
<...> mußt Du ersetzen mit dem suchenden String.
Rückgabewert ist
0 = gefunden
1 = nicht gefunden
Du kannst <...> auch durch ein %1 ersetzen und den Suchstring als Parameter mitgeben. Das ist es variabel. Der Aufruf würde dann so lauten:
<MeineBatchdatei>.cmd <mein Suchtext>
Markus
In diesem Fall, du hast also Excel auf dem gleichen Server geöffnet wie dein Word, dürfte keine Windows Anmeldung mehr erfolgen
=> kein erneutes aufrufen des Anmeldescriptes.
Ja, hört sich glaubwürdig an => kein erneutes aufrufen des Anmeldescriptes.
Wie gesagt ich brauch die Werte zwingend in meinem vbs.
Ja, tut mir leid. Kann ich nicht mit dienen.Ich kann mir nicht vorstellen, dass VB das nicht kann. Du müßtest bei der aufrufenden Funktion mal sehen, was zurückgeliefert wird. In Kix z. B. gibt es dafür eigens Funktionen wie @16034 und @serror.
Aber wenn die Citrix-Sitzung gestartet ist und dann Dein Anmeldescript läuft, ist es dann nicht eh zu spät?
Markus
Moin Moin,
ich habe das Gefühl, dass ich mehr Verwirrung stifte als helfe. Ich werde das heute noch einmal probieren, wobei meine Mittel (leider) eingeschränkt sind.
Aber ich bin mir recht sicher, dass wenn wir über veröffentliche Anwendungen reden, dass ich jedesmal eine eigene Citrix-verbindung bekomme, auch wenn ich "zufällig" auf dem selben Terminalserver gelange. Bei einem (zweiten) veröffentlichten Desktop kann ich mir das ja noch verstellen ....
Wenn die Rückgabe des Errorlevel in VB nicht ankommen sollte, hätte ich noch eine Idee. Der find-Befehl "zählt" auch. Anstatt also die gesamte Ausgabe in eine Datei umzuleiten, kannst Du auch die Anzahl der Treffer in eine Datei umleiten. Das wäre zusätzlich der Parameter /C. Diese 5 Byte während der Anmeldeprozedur auszuwerten (mit Datei öffnen, Zeile lesen, Datei schließen) sollte sich nicht bemerkbar machen.
Markus
ich habe das Gefühl, dass ich mehr Verwirrung stifte als helfe. Ich werde das heute noch einmal probieren, wobei meine Mittel (leider) eingeschränkt sind.
Aber ich bin mir recht sicher, dass wenn wir über veröffentliche Anwendungen reden, dass ich jedesmal eine eigene Citrix-verbindung bekomme, auch wenn ich "zufällig" auf dem selben Terminalserver gelange. Bei einem (zweiten) veröffentlichten Desktop kann ich mir das ja noch verstellen ....
Wenn die Rückgabe des Errorlevel in VB nicht ankommen sollte, hätte ich noch eine Idee. Der find-Befehl "zählt" auch. Anstatt also die gesamte Ausgabe in eine Datei umzuleiten, kannst Du auch die Anzahl der Treffer in eine Datei umleiten. Das wäre zusätzlich der Parameter /C. Diese 5 Byte während der Anmeldeprozedur auszuwerten (mit Datei öffnen, Zeile lesen, Datei schließen) sollte sich nicht bemerkbar machen.
Markus