Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Rückgabe eines CMD Befehls in eine Variable speichern

Frage Entwicklung VB for Applications

Mitglied: ThomasBroecker

ThomasBroecker (Level 1) - Jetzt verbinden

17.11.2010 um 10:02 Uhr, 8845 Aufrufe, 10 Kommentare

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.
Mitglied: BigWim
17.11.2010 um 10:18 Uhr
Moin moin,

die einfachste Version sieht so aus:

01.
@echo off 
02.
for /f "tokens=1,3" %%a in ('qwinsta') do echo %%a %%b
Liefert Dir z. b. 1. und die 3. Spalte zurück.


Markus
Bitte warten ..
Mitglied: ThomasBroecker
17.11.2010 um 11:14 Uhr
Danke für die Antwort!

Ich bin damit allerdings irgendwie überfordert. Ist das vbs?
Ich will das ganze ja nicht in einer batch sondern in einem vbs haben...

Falls das wirklich vbs ist, bitte ich um eine Erklärung von dem was da steht. (wie bekomme ich die Werte in meine Variable , was macht der Parameter /f, warum wofür der Platzhalter vor in? , "tokens=1,3" steht für die ausgewählten spalten oder?)
Bitte warten ..
Mitglied: BigWim
17.11.2010 um 11:23 Uhr
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
Bitte warten ..
Mitglied: ThomasBroecker
17.11.2010 um 12:02 Uhr
Genau auf die Idee bin ich auch schon gekommen
Allerdings würde ich dies nur sehr sehr ungern machen, da ich mein Script als Anmeldescript laufen lassen will.

Ich werde heut noch testen ob ich diesen Teil des Scriptes überhaupt noch brauch, evtl. hat sich dieser Teil schon erledigt.
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. Da ich über dieses Script meine Drucker verbinde und am Anfang des Scriptes erstmal alle Drucker wegwerfe.
Allerdings wird der Benutzer anscheinend nicht zweimal angemeldet wenn er zwei unterschiedliche Anwendungen (Citrix published Application) auf einem Server anmeldet, somit wird das Script so oder so nur einmal ausgeführt.
Bitte warten ..
Mitglied: BigWim
17.11.2010 um 13:03 Uhr
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.

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.

01.
@echo off 
02.
qwinsta.exe | find /i "<mein Suchtext>" >NUL: 
03.
echo Errorlevel ist %errorlevel%
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
Bitte warten ..
Mitglied: ThomasBroecker
17.11.2010 um 14:01 Uhr
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.

Ja es läuft alles einmal durch, muss es ja auch! Nur wenn du bereits eine Anwendungen offen hast, sagen wir mal Word dann landest du auf server1. Nun möchtest du auch noch excel aufmachen, dann guckt der Citrix Server, der für die Anmeldungen verantwortlich ist (ka wie der heißt, hat jedenfalls nen Namen ;) ), auf welchem Server du bereits eine Anwendung offen hast. Falls dieser Server dann dein Excel auch noch starten kann, öffnet sich auf diesem Server dein Excel. 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.

Solltest du noch keine Sitzung an dem Server haben, an dem du dich anmeldest, muss das Script natürlich durchlaufen, sonst hätte der Benutzer ja auch keine Drucker.



Deine Lösung hilft mir immernoch nicht richtig weiter.

1. Das Script würde immer behaupten das der Benutzer bereits angemeldet ist, weil die Sitzung zu dem Zeitpunkt der Ausführung des Scriptes bereits besteht und somit in der Liste auftaucht.
Das kann man wahrscheinlich dann in dem Batch lösen indem man sich ne schleife oder so baut in der man dann zählt
2. gibt mir wshshell.run dann die Werte 0/1 zurück?
Wie gesagt ich brauch die Werte zwingend in meinem vbs.
Bitte warten ..
Mitglied: BigWim
17.11.2010 um 15:14 Uhr
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 Ist mir aber hier nicht gelungen nachzustellen ...

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
Bitte warten ..
Mitglied: ThomasBroecker
17.11.2010 um 16:40 Uhr
Zitat von BigWim:
Aber wenn die Citrix-Sitzung gestartet ist und dann Dein Anmeldescript läuft, ist es dann nicht eh zu spät?

Nein das ist nicht zu spät.
Ich trenne die Drucker ja erst in meinem Script und wenn ich vorher eine abfrage starte ob der Benutzer bereits einmal angemeldet ist, springe ich einfach direkt ans ende des Scripts.
Wann sollte ich denn dann das Script starten? Ich kann ja schlecht die ganzen Anwendungen im Citrix umbauen und erst nen Script laufen lassen welcher mir dann sagt ob der Benutzer schon angemeldet ist oder nicht. :P


Ich werde das mit dem ausführen des Anmeldescripts noch einmal testen. Solltest du recht damit haben, dass das Anmeldescript nocheinmal durchläuft, muss ich mir noch was überlegen. Ich kann ja dem Benutzer auch nicht plötzlich die Drucker unterm Hintern weg ziehen -- selbst wenn die kurz später wieder zur Verfügung stehen.
Bitte warten ..
Mitglied: BigWim
18.11.2010 um 08:30 Uhr
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
Bitte warten ..
Mitglied: ThomasBroecker
18.11.2010 um 16:12 Uhr
Es geht mir auch nicht um die Datenmenge sondern um die Tatsache, dass ich eine Datei erstellen muss...

Und ja wir sprechen über veröffentlichte Anwendungen. Du landest auch nicht zufällig auf dem gleichen Server sondern mit voller absicht von Citrix. Da du auf zwei verschiedenen Servern jeweils eine gesammte Umgebung brauchst die Speicher usw. frisst... Wenn du allerdings auf dem selben Server landest brauchst du dies nicht.

Citrix kontrolliert ob der Server auf dem du bereits angemeldet bist auch die Anwendung bereitstellen kann, die du aufrufen willst falls der server das kann wirst du auch auf dem selben server landen - Außer der Server ist am Kapazitätslimit.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
CMD-Ergebnis in Variable speichern und diese Variable dann andere Batchdatei übergeben
Frage von torilloBatch & Shell6 Kommentare

Hallo Forum, ich habe ein Problem mit der Übergabe einer Variable von einer in eine andere Batchdatei und würde ...

VB for Applications
Shell-CMD Befehl Ausführen
gelöst Frage von Timo0oVB for Applications2 Kommentare

Nochmal ich^^ Ich möchte eine Aufgabe mit meinem VB Programm erstellen. Jedoch komme ich nicht weiter. Folgenden Code habe ...

Batch & Shell
CMD Hostname Befehl gesucht
gelöst Frage von TobiasedBatch & Shell4 Kommentare

Hallo Community, wie aus dem Titel schon hervorgeht suche ich einen cmd Befehl mit dem es möglich ist den ...

Windows Installation
CMD-Batch Programmstart Befehle
Frage von timsen96Windows Installation1 Kommentar

Schönen guten Tag zusammen, ich möchte gerne über eine cmd oder batch datei ein Programm oder Installation öffnen und ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 21 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 23 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...