Jump to content

Auswahl an Druckern verbinden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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.

Link zu diesem Kommentar

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 von Slupor
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...