15.23 Netzdrucker zentral den Clients oder Benutzern zuweisen
 
Stellen Sie sich vor, Sie möchten von zentraler Stelle aus allen Benutzern oder Computern jeweils die nächstgelegenen Netzdrucker zuweisen. Wäre es nicht komfortabel, wenn Sie eine ASCII-Datei hätten, in der alphabetisch untereinander alle Benutzer oder alternativ alle Computer aufgelistet wären und jeweils dahinter die zuzuweisenden Drucker? Das Tool Kix32 macht es möglich. Sie erstellen eine ASCII-Datei namens drucken.txt mit folgendem Inhalt:
PC0001,\\s1\HP-444,
PC0002,\\s1\HP-616,
PC0010,\\s1\hp-615,
PC0012,\\s1\HP-444,\\s1\HP-616,
PC0101,\\s1\HP-444
PC0103,\\s1\qms-ps41,
PC0104,\\s1\qms-ps41,
PC0105,\\s1\HP-522,\\s1\HP-616,
PC0107,\\s1\HP-522,
PC0202,\\s1\HP-444,
Sie legen außerdem ein Kix-Skript namens drucken.kix an, das Sie auf der Buch-DVD finden. Dieses Kix-Skript arbeitet wie folgt: Zuerst wird die Datei drucken.txt nach C:\Temp kopiert. Der Grund ist folgender: Sie müssen an der zentralen Datei \\s1\netlogon\kix\drucken.txt regelmäßig Änderungen vornehmen. Wenn ein Anwender sich anmeldet, so kann es sein, dass er die zentrale Datei blockiert, wenn diese Datei direkt mit dem Kix-Skript drucken.kix bearbeitet wird. Das Skript kopiert deshalb die Datei drucken.txt nach C:\Temp und öffnet in der zweiten Zeile des Skripts nunmehr diese dezentrale Datei drucken.txt. Somit ist die ursprüngliche Datei \\s1\netlogon\kix\drucken.txt sofort wieder freigegeben.
Das Skript sucht nun alle Zeilen der Datei drucken.txt danach ab, ob es eine Zeile findet, die mit demselben Computernamen beginnt wie der Computer, an dem der Benutzer sich gerade anmeldet. Wird es fündig, so springt es zur Sprungmarke DRUCKEN und arbeitet in einer Schleife die entsprechende Zeile ab. In der drucken.txt können – vom Computernamen durch Komma getrennt – jetzt die Freigabenamen eines oder mehrerer Netzdrucker erscheinen. Sobald ein Komma gefunden wird, wird der zwischen zwei Kommata stehende Begriff als Variable $Drucker dem Kix-Befehl AddPrinterConnection übergeben. Die Syntax if AddPrinterConnection($Drucker)=0 überprüft dabei sofort, ob der AddprinterConnection-Befehl erfolgreich war. Dies bedeutet, dass der übergebene Errorlevel gleich 0 war. Wenn ein Errorlevel größer 0 zurückgegeben wird, so wird dem Anwender die zurückgegebene Errormeldung angezeigt (? "Fehler " + @ERROR + " = " + @SERROR) und ein weiterer Hinweis eingeblendet.
Um das Skript zu testen, schließen Sie einen Drucker am Server an und geben ihn unter dem Namen HP-444 frei. Melden Sie sich als Administrator am Windows-XP-Computer an und stellen Sie sicher, dass es ein Verzeichnis C:\Temp gibt. Wenn der Windows-XP-Rechner nicht den Namen PC0001 hat, so ändern Sie die Datei drucken.txt entsprechend ab.
Öffnen Sie eine CMD-Box und setzen Sie dort folgenden Befehl ab:
\\s1\netlogon\kix\kix32 \\s1\netlogon\kix\drucken.kix
Beim ersten Mal dauert es etwas länger, bis die Meldung UNC-Drucker \\s1\HP-444 erfolgreich angeschlossen erscheint, denn die Druckertreiber müssen vom Server heruntergeladen und installiert werden. Wenn Sie den Befehl ein zweites Mal absetzen, kommt die Meldung dann sofort.
Löschen Sie den angeschlossenen Drucker über Start · Einstellungen · Drucker- und Faxgeräte über die rechte Maustaste und den Menüpunkt Löschen. Sie können jetzt die Datei drucken.txt variieren und durch erneutes Starten des Skripts überprüfen, wie sich das Skript verhält. Täuschen Sie dem Server S1 vor, dass am Anschluss LPT2 ebenfalls ein Drucker namens HP-616 installiert ist. Installieren Sie also am Server einen weiteren Drucker am Anschluss LPT2 und geben Sie ihn unter dem Namen HP-616 frei. Testen Sie das Skript mit folgender geänderten drucken.txt:
PC0012,\\s1\HP-444,
PC0002,\\s1\HP-616,
PC0010,\\s1\hp-615,
PC0001,\\s1\HP-444,\\s1\HP-616,
PC0101,\\s1\HP-444
PC0103,\\s1\qms-ps41,
PC0104,\\s1\qms-ps41,
PC0105,\\s1\HP-522,\\s1\HP-616,
PC0107,\\s1\HP-522,
PC0202,\\s1\HP-444,
Wenn der PC den Namen PC0001 hat, wird die fett markierte Zeile abgearbeitet und es werden nacheinander zwei Netzdrucker angeschlossen. Dieser Vorgang dauert beim ersten Mal länger, denn es müssen zwei verschiedene Druckertreiber vom Server heruntergeladen und installiert werden. Wenn Sie sich als einfacher Benutzer unter der Kennung Testuser anmelden und das Skript starten, werden Sie bemerken, dass die Netzdrucker auch mit den einfachen Rechten eines Domänenbenutzers hinzugefügt werden können. Versuchen Sie hingegen, einen lokalen Drucker über Start · Einstellungen · Drucker und Faxgeräte · Drucker hinzufügen an einem der LPT-Ports anzuschließen, so ist diese Option aufgrund der fehlenden Rechte nicht anwählbar.
Als Alternative zu diesem Kix-Skript finden Sie auf der Buch-DVD im Verzeichnis NETLOGON\VBS das Visual Basic-Skript NetzdruckerVerbinden.vbs. Es leistet Ähnliches, setzt aber voraus, dass die Ausführung von VB-Skripten überhaupt zulässig ist und nicht über eine Gruppenrichtlinie unterbunden wurde. Letzteres könnte aber sinnvoll sein, da Computerviren sich auch über VB-Skripte verbreiten. Ein Ausweg ist, nur signierte VB-Skripte zuzulassen und alle VB-Skripte, die im Anmeldeskript eingesetzt werden, zu signieren. Dieser Vorgang ist jedoch nicht unkompliziert und mit gewissem Aufwand verbunden, wenn neue VB-Skripte hinzukommen und vorhandene geändert werden.
|