Blade1981 10 Geschrieben 25. August 2009 Melden Teilen Geschrieben 25. August 2009 Hallo zusammen, ich möchte in der Registry per vbs IP-Druckerports anlegen, dass diese nicht manuell eingetragen werden müssen. Es handelt sich hierbei um ca. 150 IP-Adressen in den Druckerports. Das Script funktioniert so weit auch schon, nur eine Zeile wird nicht in die Registry geschrieben. Hier das Testscript: _________ dim IPPort 'FortlaufendeNummer dim IPNummer, IP, Pfad Set WshShell = CreateObject( "WScript.Shell" ) IPNummer = "172.31.33." Pfad = "HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\" For IPPort = 3 to 4 IP = CStr(IPNummer)+CStr(IPPort) WshShell.RegWrite Pfad + IP + "\HostName", "", "REG_SZ" WshShell.RegWrite Pfad + IP + "\HWAddress", "", "REG_SZ" WshShell.RegWrite Pfad + IP + "\IPAddress", IP, "REG_SZ" WshShell.RegWrite Pfad + IP + "\PortMonMibPortIndex", "00000000", "REG_DWORD" WshShell.RegWrite Pfad + IP + "\PortNumber", "0000238c", "REG_DWORD" WshShell.RegWrite Pfad + IP + "\Protocol", "00000001", "REG_DWORD" WshShell.RegWrite Pfad + IP + "\SNMP Community", "public", "REG_SZ" WshShell.RegWrite Pfad + IP + "\SNMP Enabled", "00000000", "REG_DWORD" WshShell.RegWrite Pfad + IP + "\SNMP Index", "00000001", "REG_DWORD" WshShell.RegWrite Pfad + IP + "\Version", "00000002", "REG_DWORD" Next Wscript.Echo "Fertig!" _________ Es funktioniert nur diese Zeile nicht: WshShell.RegWrite Pfad + IP + "\PortNumber", "0000238c", "REG_DWORD" Das Script bricht ab mit dem Fehler: Fehler: Typen unverträglich Code: 800A000D Quelle: Laufzeitfehler in Microsoft VBScript Wisst ihr eine Lösung? Danke! Zitieren Link zu diesem Kommentar
jaksa 10 Geschrieben 25. August 2009 Melden Teilen Geschrieben 25. August 2009 Warum benutzt Du kein WMI? Installs a TCP/IP printer port on a computer. Set objWMIService = GetObject("winmgmts:") Set objNewPort = objWMIService.Get _ ("Win32_TCPIPPrinterPort").SpawnInstance_ objNewPort.Name = "IP_169.254.110.14" objNewPort.Protocol = 1 objNewPort.HostAddress = "169.254.110.14" objNewPort.PortNumber = "9999" objNewPort.SNMPEnabled = False objNewPort.Put_ Quelle: Printer Port Scripting, Monitor Printer Ports using VBScript Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 25. August 2009 Autor Melden Teilen Geschrieben 25. August 2009 Weil ich mich mit VBS nicht soooo gut auskenne und eig. froh um meine Lösung war ;) (Die leider wg. dem einen Eintrag nicht funktioniert :( ) Was ist der Vorteil wenn ich das per WMI mache? (Außer dass es funktionieren wird?) Es sollen sich viele mit unseren Scripten zurecht finden und wenn man zu speziell wird, ist das nicht mehr gegeben. Danke trotzdem, ich probier es gleich mal aus! Woran liegt es, dass ich den Key per VBS nicht in die Registry schreiben kann? P.S.: Wofür ist der Unterschtrich am Ende? Und wofür ist das SNMP? Zitieren Link zu diesem Kommentar
jaksa 10 Geschrieben 25. August 2009 Melden Teilen Geschrieben 25. August 2009 Du benutzt aber schon VBScript, deswegen dachte ich dass Du Dich damit auskennst. Warum Deine Lösung nicht geht, kann ich Dir auf Anhieb nicht sagen. Auf den ersten Blick sieht die Zeile korrekt aus. Ich persönlich mag aber Reg Manipulationen nicht und versuche diese zu vermeiden wo es geht. Und da für die Druckergeschichte eine WMI Schnittstelle exisistiert, würde ich die auch benutzen. Die Unterstriche sagen dem Interpreter dass der Befehl in der nächsten Zeile fortgesetzt wird. Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 25. August 2009 Autor Melden Teilen Geschrieben 25. August 2009 Nun, ich "bastel" mir die Scripte immer entsprechend zurecht. Wirklich auskennen aber nicht ;) Ich habs auch schon hinbekommen mit deiner Hilfe, danke vielmals! Hinweis: Die Druckerports (IP-Ports) sind nur in der Registry hinterlegt und das ist ein gängiger Weg, IP-Ports anzulegen. Wird auch oftmals so im Netz beschrieben und wir haben das bisher auch so gemacht. Da Änderungen aber in der ellen langen Reg-Datei nicht leicht zu vollziehen sind, bzw. eine Erweiterung der Ports sehr aufwändig ist, ist so ein Script schon eine schöne Lösung ;) Übrigens funktioniert die Lösung mit Windows7 ;) Danke noch mal! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 25. August 2009 Melden Teilen Geschrieben 25. August 2009 Moin, den Typenfehler bekommst du wahrscheinlich, weil der Hex-String nicht als solcher erkannt wird. Vermutlich müsstest du noch einen Präfix davor hängen. Aber WMI ist eindeutig die bessere Alternative, denn auf die Weise steuerst du die Windows-Funktion und trägst nicht nur irgendwas in die Registry ein. Gruß, Nils Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 25. August 2009 Autor Melden Teilen Geschrieben 25. August 2009 Wie könnte dieser Präfix ausschauen? Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 25. August 2009 Melden Teilen Geschrieben 25. August 2009 Moin, da habe ich jetzt mangels Bedarf nicht recherchiert. Es gibt da unterschiedliche Notationsweisen. Ich denke, dass eine Google-Recherche dich da weiterbringen würde. (Trotzdem bleibt WMI vorzuziehen.) Gruß, Nils Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 25. August 2009 Melden Teilen Geschrieben 25. August 2009 vermutlich mal 0x..... , ansonsten rechne mit calc.exe den hex-Wert zur Not ins dezimale um cu blub Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 25. August 2009 Autor Melden Teilen Geschrieben 25. August 2009 Wenn ich nicht "0000238c" sondern "9100" verwende, wird der Wert in der Registry als "0000238c" eingetragen. Das Umwandeln von HEX in DEZIMAL hat den Erfolg gebracht :) 0x hatte ich auch schon in verschiedenen Variationen versucht und das ging nicht. Danke euch allen, jetzt bin ich glücklich :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.