Slupor 10 Geschrieben 2. Januar 2014 Melden Teilen Geschrieben 2. Januar 2014 Frohes Neues Jahr an alle an dieser Stelle. Wie es letztes Jahr aufgehört hat mit meinem Anmeldescript ist hier zu lesen: http://www.mcseboard.de/topic/196242-mehrere-anmeldescripte-m%C3%B6glich/ Nun stehe ich vor meinem nächsten Gehirnjogging und irgendwie will mein Hirn dieses Jahr nicht so ganz mitspielen, vielleicht nach 14 Tagen Urlaub aus der Übung... - Ich habe einen Printserver (PS-1) auf dem insgesamt 114 Drucker installiert sind. - Alle sind brav benannt (für Mandant 18 heißt der Laserdrucker mit der IP 192.168.0.101 z.B. 18-L101, der Nadeldrucker mit der IP 192.168.0.102 z.B. 18-N102, usw.) Wie ich eine Liste mit allen freigegebenen Druckern bekomme weiß ich noch, das hat auch wunderbar hiermit funktioniert: dim PRNServer dim Computer dim PrintQueue dim PRNAME dim fso PRNAME = "#" PRNServer = "PS-1" set fso = CreateObject("Scripting.FileSystemObject") set fdesc = fso.OpenTextFile("printers.txt", 2, True) Set Computer = GetObject("WinNT://" & PRNServer & ",Computer") Computer.Filter = Array("PrintQueue") For Each PrintQueue In Computer PRNAME = PRNAME & PrintQueue.PrinterName & "#" Next fdesc.WriteLine(PRNAME) fdesc.Close Die Textdatei war nur zum Test, es reicht mir ja im Script später das Query, aber in einer MsgBox zeigt er nicht alle an, vermutlich zu viel Inhalt. Als Trennzeichen zwischen den Druckern ist auch schön brav ein "#" damit man weiß: hier beginnt der nächste Drucker. Achtung, erst jetzt kommt die Frage: Wie kann ich z.B. alle Drucker installieren, die im Query mit "#\\PS-1\18-" stehen? Brauche ich das Query überhaupt? Ich muss es mit einem Script lösen, ich weiß selbst, dass und wie es einfacher geht, dient als Übung in VBS. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 2. Januar 2014 Melden Teilen Geschrieben 2. Januar 2014 For Each PrintQueue In Computer if Instr(PrintQueue.PrinterName, "PS-1\18-") > 0 then 'Drucker hier installieren... PRNAME = PRNAME & PrintQueue.PrinterName & "#" end if Next ... z.B. ... und auch ein gutes Neues Jahr :) Zitieren Link zu diesem Kommentar
Slupor 10 Geschrieben 3. Januar 2014 Autor Melden Teilen Geschrieben 3. Januar 2014 (bearbeitet) Ok, das hat schonmal wunderbar geklappt und lies sich auch einwandfrei einbinden, aber wie sage ich meinem Script nun, dass es z.B. genau die 4 Drucker die mit 18- anfangen auch installieren soll? bisher wurden alle Drucker "von Hand" mit objNetwork.AddWindowsPrinterConnection "\\PS-1\18-L202" installiert. Alle Netzwerkdrucker deinstallieren habe ich auch hinbekommen mit Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * From Win32_Printer Where Network = True") For Each objPrinter in colInstalledPrinters objPrinter.Delete_ Next Ich habe jetzt ja meine schöne Druckerliste die wie folgt aussieht: "#\\PS-1\01-L100#\\PS-1\01-L101#\\PS-1\02-L100#..." Darin stecken ja irgendwo auch meine "\\PS-1\18-" Drucker. Mit deinem Vorschlag kann ich jetzt zwar sagen sobald diese auftauchen tue irgendwas oder installiere einen bestimmten Drucker, aber ich möchte ja direkt alle die darin auftauchen auch installieren und genau da hänge ich. Wie in meinem anderen Thread (siehe Link im ersten Post) zu sehen ist war mir das if Instr(PrintQueue.PrinterName, "PS-1\18-") > 0 then nicht fremd. Ich hänge im Prinzip an genau dieser Stelle nun fest und hoffe auf weitere Denkanstöße: 'Drucker hier installieren... Edit: habe es nun "fast" hinbekommen... dim PRSName dim Computer dim PrintQueue dim PRNAME dim fso PRNAME = "" PRSName = "PS-1" set fso = CreateObject("Scripting.FileSystemObject") set fdesc = fso.OpenTextFile("test.txt", 2, True) Set Computer = GetObject("WinNT://" & PRSName & ",Computer") Computer.Filter = Array("PrintQueue") For Each PrintQueue In Computer if Instr(PrintQueue.PrinterName, "PS-1\18-") > 0 then fdesc.WriteLine(PrintQueue.PrinterName & " wurde installiert!") end if PRNAME = PRNAME & PrintQueue.PrinterName & vbCrlf Next fdesc.WriteLine(PRNAME & vbCrlf & vbCrlf & "XXXXXXXXXXXXXXXXXX") fdesc.Close Lasse zu testzwecken erstmal alles per Ausgabe in eine Textdatei schreiben, bis ich sicher bin, dass das auch funktioniert. Folgendes Problem habe ich aber noch... meine Textdatei sieht wie folgt aus: \\PS-1\18-LabelPrinter wurde installiert! \\PS-1\18-L205 wurde installiert! \\PS-1\18-L204 wurde installiert! \\PS-1\18-Fax-203 wurde installiert! \\PS-1\18-LabelPrinter \\PS-1\18-L205 \\PS-1\18-L204 \\ps-1\18-L203 \\ps-1\18-L202 \\PS-1\18-Fax-203 . . . XXXXXXXXXXXXXXXXXX gesetz dem Fall ich würde "fdesc.WriteLine(PrintQueue.PrinterName & "wurde installiert!")" ersetzen durch "objNetwork.AddWindowsPrinterConnection PrintQueue.PrinterName" würden mir nun 2 Drucker fehlen, aber warum? Es wurde der Drucker 18-L203 und 18-L202 nicht installiert... kann das an der Groß- Kleinschreibung liegen? wieso macht er überhaupt mal groß und mal klein? Dachte eigentlich Windows wäre außer bei Passwörtern die Groß- Kleinschreibung egal... Habe auch schon versucht im Script die Groß- Kleinschreibung zu ändern, bzw. anzupassen, bringt aber nichts, er liest manche Drucker nur mit Großbuchstaben wie es im Script steht und manche mit Kleinbuchstaben :( jemand eine Idee? Nochmal Edit: Fehler schneller gefunden als ich dachte: Manche Drucker waren wohl noch mit Kleinbuchstaben bereits verbunden, wenn ich diese Trenne dann funktioniert es wie es soll. bearbeitet 3. Januar 2014 von Slupor Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 3. Januar 2014 Melden Teilen Geschrieben 3. Januar 2014 Na prima :) 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.