homecomingservice
Goto Top

CMD Fenster bei Aufruf von vbScript Funktion verstecken

Hallo Leute!

ich habe eine Function geschrieben die so aussieht


Public Function SNMPAbfrage (version, ipadresse, OID )
	Dim WshShell, oExec, name
	Set WshShell = CreateObject ("WScript.Shell")  
	Set oExec = WshShell.Exec ("snmpget -" & version & " -c public " & ipadresse & " " & OID)  
	Do While oExec.Status = 0
		WScript.Sleep 100
	Loop
	Do While oExec.StdOut.AtEndOfStream <> True
		name = oExec.StdOut.ReadLine
	Loop
	If inStr(name, Chr (34)) Then	
		searchleft = Chr (34)
		searchright = Chr (34)
		result = mid (name, instr(name, searchleft)+1, instrrev(name, searchright)-instr(name, searchleft)-1)
	Else
		result=right (name, len(name)-instrrev (name," "))  
	End If
	SNMPAbfrage = result
end function

nun möchte ich das CMD Fenster das beim Aufrufen dieser Function erscheint verstecken
wisst ihr wie ich das umsetzen könnte?

Vielen Dank
homecomingservice

Content-Key: 163808

Url: https://administrator.de/contentid/163808

Printed on: April 19, 2024 at 08:04 o'clock

Member: colinardo
colinardo Apr 01, 2011 at 13:26:20 (UTC)
Goto Top
  • Sowas kannst du mit Exescript machen -> http://www.hide-folder.com/overview/hf_7.html
  • Das WSH Shell Objekt bietet noch eine "Run" Methode, der du einen Wert für die Sichtbarkeit mitgeben kannst - leider ist der Rückgabewert der Funktion kein WshScriptExec-Object.
  • Oder das ganze in ein AutoIt-Script packen, das bietet Optionen dafür.

Wenn du willst mach ich dir aus dem Script eine "EXE"-Datei mit verstecktem Fenster....

face-wink Uwe
Member: homecomingservice
homecomingservice Apr 01, 2011 at 13:39:40 (UTC)
Goto Top
Danke Uwe für deine antwort
das Problem is bloß das Programm ist etwas länger ich habe 13 SNMP abfragen und lass mir den Rückgabewert Speziell zurückgeben.
Es wird mir für jede einzelne SNMP Abfrage ein Fenster geöffnet und dann weider geschlossen kann man das Komplett mit der Run Methonde verstecken?
Das mit der Run Methode hab ich auch schon gelesen nur leider kenn ich mich nich allzugut in vbs aus (das Script erstelln war schon Arbeit genug :D)

Bei Bedarf Poste ich dir auch das ganze Script
lg homecomingservice
Member: colinardo
colinardo Apr 01, 2011 at 13:46:39 (UTC)
Goto Top
Was passiert ausserhalb des Funktionsaufrufes ? kommen irgendwelche grafischen Ausgaben zum Einsatz oder schreibt das Script die Ergebnisse in eine Datei ? Post mal das ganze Script...
Member: homecomingservice
homecomingservice Apr 01, 2011 at 13:53:30 (UTC)
Goto Top
'Script zum Abfragen eines Druckers per SNMP  
' Abfrage bestimmter Werte wie Tonerstand und Status  


'Deklaration und Wertzuweisung von Constanten und Variablen  
Dim IP, OID, Version , modell, status, maxgedruckt, fagedruckt, swgedruckt, swmax, swatm, mamax, maatm, gemax
Dim cymax, cyatm, sw, ma, ge, cy, WshShell, oExec, name, result
Const intOK = 0
Const intWarning = 1
Const intCritical = 2
Const intUnknown = 3
IP = "192.168.50.207"  
OID = "1.3.6.1"  
Version = "v1"  

'SNMP-Abfrage vorgegebener Werte  
modell = SNMPAbfrage (Version, "192.168.50.207",".1.3.6.1.4.1.1347.40.10.1.1.5.1")  
If modell = "ErrSNMPprog" Then  
	'SNMP-Programm nicht vorhanden  
ElseIf modell <> "" Then  
	sernum = SNMPAbfrage (Version, IP, OID & ".2.1.43.5.1.1.17.1")  
	status = SNMPAbfrage (Version, IP, OID & ".2.1.25.3.5.1.1.1")  
	maxgedruckt =  SNMPAbfrage (Version, IP, OID & ".2.1.43.10.2.1.4.1.1")  
	fagedruckt =  SNMPAbfrage (Version, IP, OID & ".4.1.1347.42.2.2.1.1.3.1.2")  
	swgedruckt =  SNMPAbfrage (Version,IP, OID & ".4.1.1347.42.2.2.1.1.3.1.1")  
	swmax = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.8.1.4")  
	swatm = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.9.1.4")  
	mamax = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.8.1.2")  
	maatm = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.9.1.2")  
	gemax = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.8.1.3")  
	geatm = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.9.1.3")  
	cymax = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.8.1.1")  
	cyatm = SNMPAbfrage (Version, IP, OID & ".2.1.43.11.1.1.9.1.1")  
	sw = (swatm * 100) / swmax
	ma = (maatm * 100) / mamax
	ge = (geatm * 100) / gemax
	cy = (cyatm * 100) / cymax
End If


'Ausgabe der Daten  
If modell = "" Then 'Gerät nicht erreichbar  
	Wscript.Echo "IP:" & " " & IP & "-" & "Statusabfrage nicht möglich"  
	Wscript.Quit(intUnknown)
ElseIf modell = "ErrSNMPprog" Then 'SNMP-Programm nicht vorhanden  
	Wscript.Echo "SNMPT-Programm nicht vorhanden"  
	Wscript.Quit(intCritical)
ElseIf sw <=5 or cy <=5 or ma <=5 or ge <=5 Then 'Tonerstand unter 5%  
	Wscript.Echo modell & " " & "(" & "SerNR" &" " & sernum & "/" & "IP" & " " & IP & ")" & "-" & "Tonerstand unter 5%" & "-" & "Zählerstand:" & " " & maxgedruckt & "(Farbe:" & " " & fagedruckt & "/SW:" & " " & swgedruckt & "-" & "Tonerstand: K" & " " & sw & "%" & "/C" & " " & cy & "%" & "/M" & " " & ma & "%" & "/Y" & " " & ge & "%"  
	Wscript.Quit(intCritical)
ElseIf sw <= 20 or cy <=20 or ma <=20 or ge <=20 Then 'Tonerstand unter 20%  
	Wscript.Echo modell & " " & "(" & "SerNR" &" " & sernum & "/" & "IP" & " " & IP & ")" & "-" & "Tonerstand unter 20%" & "-" & "Zählerstand:" & " " & maxgedruckt & "(Farbe:" & " " & fagedruckt & "/SW:" & " " & swgedruckt & "-" & "Tonerstand: K" & " " & sw & "%" & "/C" & " " & cy & "%" & "/M" & " " & ma & "%" & "/Y" & " " & ge & "%"  
	Wscript.Quit(intWarning)
Else 'Alles OK  
	Wscript.Echo  modell & " " & "(" & "SerNR" &" " & sernum & "/" & "IP" & " " & IP & ")" & "-" & status & "-" & "Zählerstand:" & " " & maxgedruckt & "(Farbe:" & " " & fagedruckt & "/SW:" & " " & swgedruckt & "-" & "Tonerstand: K" & " " & sw & "%" & "/C" & " " & cy & "%" & "/M" & " " & ma & "%" & "/Y" & " " & ge & "%"  
	Wscript.Quit(intOK)
End If	

'SNMP-Abfrage  
Public Function SNMPAbfrage (version, ipadresse, OID )
	Dim WshShell, oExec, name
	Set WshShell = CreateObject ("WScript.Shell")  
	Set oExec = WshShell.Exec ("snmpget -" & version & " -c public " & ipadresse & " " & OID)  
	Do While oExec.Status = 0
		WScript.Sleep 100
	Loop
	Do While oExec.StdOut.AtEndOfStream <> True
		name = oExec.StdOut.ReadLine
	Loop
	If inStr(name, Chr (34)) Then	
		searchleft = Chr (34)
		searchright = Chr (34)
		result = mid (name, instr(name, searchleft)+1, instrrev(name, searchright)-instr(name, searchleft)-1)
	Else
		result=right (name, len(name)-instrrev (name," "))  
	End If
	SNMPAbfrage = result
end function

das ist das Komplette Script Liest per SNMP Werte aus dem drucker und gibt mir nur 1 Ausgabe je nach Rückgabe Daten aus
ich möchte das Script später einmal für Icinga benutzen
Member: colinardo
colinardo Apr 01, 2011 at 14:04:54 (UTC)
Goto Top
du kannst das script auf der Kommandozeile so aufrufen, dann erscheinen keine Fenster:
cscript //B NAME_DER_VBS.VBS
Danach kannst du dann den Rückgabewert auswerten...
Member: homecomingservice
homecomingservice Apr 01, 2011 at 15:23:10 (UTC)
Goto Top
Super! Danke! so sollte es sein :D