Zum Inhalt wechseln


Foto

Anfängerfrage: Im VB Script ein CMD Befehl absetzten


  • Bitte melde dich an um zu Antworten
11 Antworten in diesem Thema

#1 ccornelsen

ccornelsen

    Newbie

  • 55 Beiträge

 

Geschrieben 27. März 2008 - 10:54

So ihr Profis,

ich denke mal die Frage ist einfach, ich beschäftige mich aber heute das erstmal mit Scipting, allerdings Programmieren konnte ich mal, also nicht ganz unbefleckt....

Mein Szenario:
Ich will in meiner Citrix Farm über ein VB Script den Usern auf den Servern eine Nachricht schicken. Der Admin/HelpDesk MA soll die Nachricht aber per Input Box eingeben. Soweit funzt es auch. Nur jetzt will ich in dem Scipt ein net send absetzen, welches auch alleine wunderbar funktioniert, aber die Komination nicht :)

Mein VB Script:
Abmelden.bvs
_____________________
Nachricht = Inputbox("Welche Nachricht sollen die User bekommen ? ")

if Nachricht = "" then

Set WSHShell = Wscript.CreateObject("Wscript.Shell")
msgbox "Keine gültige Eingabe!",0,"Fehler in der Eingabe"
WScript.Quit

else

end if
_____________________

Der net send soll so aussehen:

net send %computername% " <Nachricht aus der inputbox> "
_____________________

Wie bekomme ich das zusammengeflanscht?
Was muss ich wo machen :)

Danke in Vorraus!
MCP, MCSA, MCSE, MCTS, MCITP, MCT
CCA, CCAA, CCEA, CCI und auf den guten Weg zum CCEE :)

*Auf Rechtschreibfehler nehme ich keine Rücksicht, soll schließlich kein Aufsatz werden*

#2 phoenixcp

phoenixcp

    Expert Member

  • 5.481 Beiträge

 

Geschrieben 27. März 2008 - 11:02

WSHShell.Run(<cmd Befehl>)

Mehr Infos dazu hier: Run Method (Windows Script Host)
MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB

#3 ccornelsen

ccornelsen

    Newbie

  • 55 Beiträge

 

Geschrieben 27. März 2008 - 11:23

Danke!

Klappt schon ganz gut, allerdings wie übergebe ich die Variable "Nachricht" aus der Inputbox in den netsend command für die Ausgabe?

Set WshShell = WScript.CreateObject("WScript.Shell")

Nachricht = Inputbox("Welche Nachricht sollen die User bekommen ? ")

if Nachricht = "" then 
		
		msgbox "Keine gültige Eingabe!",0,"Fehler in der Eingabe"
	
	else

	end if

wshshell.run "net send %computername% + Nachricht "


Oder muss ich dafür eine extra Variable für deklarieren? :)

Alles für mich neuland :)
MCP, MCSA, MCSE, MCTS, MCITP, MCT
CCA, CCAA, CCEA, CCI und auf den guten Weg zum CCEE :)

*Auf Rechtschreibfehler nehme ich keine Rücksicht, soll schließlich kein Aufsatz werden*

#4 phoenixcp

phoenixcp

    Expert Member

  • 5.481 Beiträge

 

Geschrieben 27. März 2008 - 11:31

In dem Fall würde ich das ganze folgendermaßen probieren:

dim cmd
cmd = "net send " & computername & " " & Nachricht
wshshell.run(cmd)

Dann musst du nur noch dafür sorgen, das die Variablen computername und Nachricht belegt sind...
MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB

#5 ccornelsen

ccornelsen

    Newbie

  • 55 Beiträge

 

Geschrieben 27. März 2008 - 12:59

Jaa, ist schon fast so wie ich es haben will....

Der Quellcode sieht wie folgt aus :
Set WshShell = WScript.CreateObject("WScript.Shell")


Dim Nachricht
Nachricht=Inputbox("Welche Nachricht sollen die User bekommen ? ")

if Nachricht="" then 
		
		 
		msgbox "Keine gültige Eingabe!",0,"Fehler in der Eingabe"
		
	
	else

	end if

dim cmd
cmd = "net send %computername%" & " " & wshshell.run(Nachricht) 
wshshell.run(cmd)

Die Variable computername bleibt Computername, da der Zielserver ein Terminalserver ist und somit jeder User, egal ob RDP oder ICA Verbindung dann diese Nachricht erhält.

Die Varibale Nachricht funzt noch nicht. In der Inputbox soll die Nachricht eingegeben werden, die nachher als netsend Nachricht versendet wird.

Beispiel:
In der InputBox wird eingegeben: "Bitte um 17Uhr abmelden"

Die Nachricht soll dann sein, wie sie dann in net send geschrieben wird:
net send %computername% "Bitte um 17Uhr abmelden"

Ich hoffe das geht aus meinen Codeversucher hervor, wie ich das gern hätte, funzt aber noch nicht ganz, nochmal bitte kurze Hilfe :)

DANKE!!!!
MCP, MCSA, MCSE, MCTS, MCITP, MCT
CCA, CCAA, CCEA, CCI und auf den guten Weg zum CCEE :)

*Auf Rechtschreibfehler nehme ich keine Rücksicht, soll schließlich kein Aufsatz werden*

#6 phoenixcp

phoenixcp

    Expert Member

  • 5.481 Beiträge

 

Geschrieben 27. März 2008 - 13:05

Probier mal folgende Zeile:

cmd = "net send %computername% " & Nachricht

MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB

#7 ccornelsen

ccornelsen

    Newbie

  • 55 Beiträge

 

Geschrieben 27. März 2008 - 13:46

Die Zeile hatte ich vorhin auch schon ausprobiert:
cmd = "net send %computername%" & Nachricht

Da passiert nix, geht einmal kurz die Dos-Box auf und das wars. Keine Nachricht. habe das auch schon in mehreren Variationen ausprobiert...

Oder stimmt was mit der Variablen nicht?

Oder andere Ideen?
MCP, MCSA, MCSE, MCTS, MCITP, MCT
CCA, CCAA, CCEA, CCI und auf den guten Weg zum CCEE :)

*Auf Rechtschreibfehler nehme ich keine Rücksicht, soll schließlich kein Aufsatz werden*

#8 phoenixcp

phoenixcp

    Expert Member

  • 5.481 Beiträge

 

Geschrieben 27. März 2008 - 13:49

Kleiner Debugtip:

Schreib dir mal den Inhal von cmd auf ne MessageBox raus und schau, was da raus kommt und setz das mal selber in einer Commandline ab und schau was dabei rauskommt.
MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB

#9 ccornelsen

ccornelsen

    Newbie

  • 55 Beiträge

 

Geschrieben 27. März 2008 - 14:00

Achjo, die alten debugTipps... Kenn ich noch von früher...

Naja, aber trotzdem, die Variable gibt er mir sauber wieder in der Msgbox nur beim net send will er mir die nicht mit reinpacken die Variable....

Oder gibt es dafür noch spezielle Syntax regeln?
MCP, MCSA, MCSE, MCTS, MCITP, MCT
CCA, CCAA, CCEA, CCI und auf den guten Weg zum CCEE :)

*Auf Rechtschreibfehler nehme ich keine Rücksicht, soll schließlich kein Aufsatz werden*

#10 Cybquest

Cybquest

    Expert Member

  • 1.888 Beiträge

 

Geschrieben 27. März 2008 - 14:02

Wenn ich daziwschenfunken darf:
Bei dem Vorschlag von phoenixcp ist nach %computername% noch ein Leerzeichen!
My name is Frank, you can say you to me.

#11 ccornelsen

ccornelsen

    Newbie

  • 55 Beiträge

 

Geschrieben 27. März 2008 - 14:05

Bingo, ganz genau, ist mir beim ausprobieren auch aufgefallen :)

Also so funzt es:
dim cmd
cmd = "net send %computername%" & " " & Nachricht 
wshshell.run(cmd)

Dann macht der das auch, sau geil!

Danke schön für die Hilfe, bei Administrativen MS und CTX Problem helfe ich gerne weiter :D
MCP, MCSA, MCSE, MCTS, MCITP, MCT
CCA, CCAA, CCEA, CCI und auf den guten Weg zum CCEE :)

*Auf Rechtschreibfehler nehme ich keine Rücksicht, soll schließlich kein Aufsatz werden*

#12 phoenixcp

phoenixcp

    Expert Member

  • 5.481 Beiträge

 

Geschrieben 27. März 2008 - 14:08

Aarghh.... das hatte ich selber übersehen das das fehlte... is ja fast peinlich...
MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB