VBScript Aufruf einer exe und Verwendung des Outputs
Hallo,
ich habe nur eine Kleingkeit Ich möchte in einem VBScript eine exe aufrufen. Diese exe hat die Aufgabe die Clientipadresse auf einem W2K Server auszulesen. Diese gibt den Wert, also die IP in einer CMD aus. Der Output-Wert dieser exe, soll dann in dem Script weiterverwendet werden, z.B. Output als Dialog.
Wer kann mir dazu kurz weiterhelfen?
Danke und VG,
Marc
ich habe nur eine Kleingkeit Ich möchte in einem VBScript eine exe aufrufen. Diese exe hat die Aufgabe die Clientipadresse auf einem W2K Server auszulesen. Diese gibt den Wert, also die IP in einer CMD aus. Der Output-Wert dieser exe, soll dann in dem Script weiterverwendet werden, z.B. Output als Dialog.
Wer kann mir dazu kurz weiterhelfen?
Danke und VG,
Marc
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133447
Url: https://administrator.de/contentid/133447
Ausgedruckt am: 19.11.2024 um 07:11 Uhr
14 Kommentare
Neuester Kommentar
Mh, ich kenne leider dieses Programm nicht.
In VBS kannst du mit
die eigene IP auslesen, wenn Winsock installiert und registriert ist.
Damit könntest du diese Information in deinem Programm weiterverarbeiten.
Das ist jetzt etwas um deine Frage rumherum geantwortet, aber wie geschrieben, ich kenne clientip.exe leider nicht.
Gruss
Tsuki
In VBS kannst du mit
set Winsock1=WScript.CreateObject("MSWinsock.Winsock", "WS_")
MsgBox Winsock1.localip
Damit könntest du diese Information in deinem Programm weiterverarbeiten.
Das ist jetzt etwas um deine Frage rumherum geantwortet, aber wie geschrieben, ich kenne clientip.exe leider nicht.
Gruss
Tsuki
warum möchtest du denn über VBS über die CMD über VBS gehen?
Das scheint mir zu kompliziert und zu umständlich.
Entweder bleibe ich beim Batchen oder beim VBS-en.
Aber gut, dass ist ja nur meine Ansicht.
Wenn der Client, der angemeldet ist beim Server, seine IP nur mitteilen soll, dann geht das auch ganz simple mit Windows-Boardmitteln. Aber du wirst deinen Grund für diese exe-Datei haben, den ich leider nicht kenne und der mir eigentlich auch egal ist
Gruss
Tsuki
[Edit]
Eins muss ich natürlich noch nachtragen!
Ein Aufruf einer Datei mit VBS könnte so erfolgen:
[/Edit]
Das scheint mir zu kompliziert und zu umständlich.
Entweder bleibe ich beim Batchen oder beim VBS-en.
Aber gut, dass ist ja nur meine Ansicht.
Wenn der Client, der angemeldet ist beim Server, seine IP nur mitteilen soll, dann geht das auch ganz simple mit Windows-Boardmitteln. Aber du wirst deinen Grund für diese exe-Datei haben, den ich leider nicht kenne und der mir eigentlich auch egal ist
Gruss
Tsuki
[Edit]
Eins muss ich natürlich noch nachtragen!
Ein Aufruf einer Datei mit VBS könnte so erfolgen:
set wshshell=createobject("wscript.shell")
wshshell.run("C:\MeineDatei.exe"), 3, true
set wshshell = nothing
Hi
Der aufruf der Exe ginge so:
Set oShell = CreateObject("wscript.shell")
Apppath = oFso.GetParentFolderName(WScript.ScriptFullName)
ScriptName = "irgendwas.exe"
Parameters = "/s "
oShell.Run chr(34) + ScriptName + " " + Parameters,0 , True
das /s bei Parameters bedeutet Silent also nicht sichtbar
würde aber auch z.B so gehen:
oShell.Run "cmd /c " + chr(34) + "irgendeas.exe" + chr(34) + "/s"
das chr(34) simmuliert ein Anführungszeichen. Wegen der eventuellen Leerzeichen im Pfad
Grüße
Wie du das Ganze in eine Datei umleiten kannst weis ich momentan nicht, aber wenn du die eigene IP auslesen willst könntest du auch WMI nutzen
Der aufruf der Exe ginge so:
Set oShell = CreateObject("wscript.shell")
Apppath = oFso.GetParentFolderName(WScript.ScriptFullName)
ScriptName = "irgendwas.exe"
Parameters = "/s "
oShell.Run chr(34) + ScriptName + " " + Parameters,0 , True
das /s bei Parameters bedeutet Silent also nicht sichtbar
würde aber auch z.B so gehen:
oShell.Run "cmd /c " + chr(34) + "irgendeas.exe" + chr(34) + "/s"
das chr(34) simmuliert ein Anführungszeichen. Wegen der eventuellen Leerzeichen im Pfad
Grüße
Wie du das Ganze in eine Datei umleiten kannst weis ich momentan nicht, aber wenn du die eigene IP auslesen willst könntest du auch WMI nutzen
Hallo mayho33
In VBS nimmt man dann einfach das "CreateTextFile" dafür.
Aber da niemand weiß, "ob und was" des TOs exe-Datei zurück gibt ist es schweirig, einen Lösungsweg vorzuschlagen.
Die Boardmittel scheinen ihn ja nicht zu interessieren. Und das DrumHerum kenne ich nicht, weil ich sitze hier vor meinem problemfreien Laptop.
Gruss
Tsuki
Wie du das Ganze in eine Datei umleiten kannst weis ich momentan nicht,
mit Boardmitteln ginge das ganze in etwa so:ipconfig >>C:\IP.log
In VBS nimmt man dann einfach das "CreateTextFile" dafür.
Aber da niemand weiß, "ob und was" des TOs exe-Datei zurück gibt ist es schweirig, einen Lösungsweg vorzuschlagen.
Die Boardmittel scheinen ihn ja nicht zu interessieren. Und das DrumHerum kenne ich nicht, weil ich sitze hier vor meinem problemfreien Laptop.
Gruss
Tsuki
WOOOOOOWWWWWW!!!!!!!
Super! Danke!
Weißt du wie lange ich das schon suche??? Und dann ist es so einfach!! Schäm dich Mayho!, Schäm dich!!
Ja schon, aber auf die Gefahr hin mich nochmals zu outen: Wie liest du eine Konsole aus???
Ich nehme an die IP *grins*
Übrigends:
Per WMI kannst du es so auslesen. Der letzte Eintrag ist deine IP. Hab auf die Schnelle nur Win32_IP4RouteTable gefunden
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_IP4RouteTable",,48)
For Each objItem in colItems
WScript.Echo "Description: " & objItem.Description
Next
Jetzt noch ne Frage:
Wie leitest du das Ganze in eine Variable (Object) um???
Danke!
mayho
Super! Danke!
Weißt du wie lange ich das schon suche??? Und dann ist es so einfach!! Schäm dich Mayho!, Schäm dich!!
In VBS nimmt man dann einfach das "CreateTextFile" dafür.
Ja schon, aber auf die Gefahr hin mich nochmals zu outen: Wie liest du eine Konsole aus???
Aber da niemand weiß, "ob und was" des TOs exe-Datei zurück gibt ist es schweirig, einen Lösungsweg vorzuschlagen.
Ich nehme an die IP *grins*
Übrigends:
Per WMI kannst du es so auslesen. Der letzte Eintrag ist deine IP. Hab auf die Schnelle nur Win32_IP4RouteTable gefunden
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_IP4RouteTable",,48)
For Each objItem in colItems
WScript.Echo "Description: " & objItem.Description
Next
Jetzt noch ne Frage:
Wie leitest du das Ganze in eine Variable (Object) um???
Danke!
mayho
Hallo @all!
Natürlich lässt sich das Ganze auch zeilenweise abfackeln - entweder per "
Grüße
bastla
Wie liest du eine Konsole aus???
Wenn die Ausgabe auf dem STDOUT-Kanal erfolgt so:Set Sh = CreateObject("WScript.Shell")
Set Exec = Sh.Exec("%comspec% /c ipconfig /all")
If Not Exec.StdOut.AtEndOfStream Then T = Exec.StdOut.ReadAll
MsgBox T
Split(T, vbCrLF)
" ein Array erzeugen, oder gleich mit einer Schleife (wie eine Textdatei) einlesen ...Grüße
bastla
Hi!
Danke! Jetzt da ich es lese ist es ganz klar und logisch
Tolle Sache! Vielen Dank!!
und weil ich ein LöscherInDenBauchFrager bin, gleich noch eine wenn du erlaubst?
bringt welchen Vorteil? Irgendwie kommt mir nämlich:
Set Exec = Sh.Exec("cmd /c ipconfig")
schneller vor? Betonuung liegt auf %comspec%
Danke!
mayho
Danke! Jetzt da ich es lese ist es ganz klar und logisch
Tolle Sache! Vielen Dank!!
und weil ich ein LöscherInDenBauchFrager bin, gleich noch eine wenn du erlaubst?
Set Exec = Sh.Exec("%comspec% /c ipconfig")
bringt welchen Vorteil? Irgendwie kommt mir nämlich:
Set Exec = Sh.Exec("cmd /c ipconfig")
schneller vor? Betonuung liegt auf %comspec%
Danke!
mayho