Die Windows CMD bietet eine brauchbare Druckerverwaltung in der Kommandozeile an.
Dank der printui.dll, die ihr mit der rundll32.exe ansprecht und die alle nötigen Werkzeuge enthält, könnt ihr Drucker hinzufügen, verwaltungen, löschen und mehr.
Dadurch lassen sich bestimmte Jobs wunderbar in Scripte packen.
Code Grundgerüst:
rundll32.exe printui.dll,PrintUIEntry /Parameter
|
Groß- und Kleinschreibung bei PrintUIEntry beachten, case sensitive.
Nun schauen wir auf die Möglichkeiten von printui.dll.
/a | [Datei] Name der Binärdatei |
/b | [Name] Basisdruckername |
/c | [Name] UNC-Computername, wenn der Vorgang auf einem Remotecomputer ausgeführt wird. |
/dl | Löscht den lokalen Drucker. |
/dn | Löscht die Netzwerkdruckerverbindung. |
/dd | Löscht
den Druckertreiber. |
/e | Zeigt Druckeinstellungen an. |
/f | [Datei] Entweder
INF-Datei oder Ausgabedatei. |
/ga | Fügt Druckerverbindungen pro Maschine hinzu. |
/ge | Listet Druckerverbindungen pro Maschine auf. |
/gd | Löscht Druckerverbindungen pro
Maschine. |
/h | [Arch] Treiberarchitektur Alpha | Intel | Mips | PowerPC. |
/ia | Installiert Druckertreiber mithilfe einer INF-Datei. |
/id | Installiert
Druckertreiber mithilfe des Assistenten. |
/if | Installiert Drucker mithilfe der
angegebenen INF-Datei. |
/ii | Installiert Drucker mithilfe des Assistenten und
einer INF-Datei. |
/il | Installiert Drucker mithilfe des Assistenten. |
/in | Fügt eine Netzwerkdruckerverbindung hinzu. |
/j | [Anbieter] Druckanbietername |
/k | Druckt eine
Testseite auf dem angegebenen Drucker aus. Kann bei der Druckerinstallation
nicht verwendet werden. |
/l | [Pfad] Quellpfad des Druckertreibers |
/m | [Modell]
Modellname des Druckertreibers |
/n | [Name] Druckername |
/o | Zeigt die Druckerwarteschlange an. |
/p | Zeigt Druckereigenschaften an. |
/q | Stiller Modus.
Fehlermeldungen werden nicht angezeigt. |
/r | [Anschluss] Anschlussname (Hier auch
die Möglichkeit Lokale Schnittstellen, anstelle des UNC Pfades anzugeben) |
/s | Zeigt Servereigenschaften an. |
/Ss | Speichert Druckereinstellungen in einer Datei. |
/Sr | Stellt Druckereinstellungen aus einer Datei wieder her. Speichert
Optionsattribute für Druckereinstellungen oder stellt diese wieder her. Die
Attribute müssen am Ende des Befehls stehen:
2 PRINTER_INFO_2
7 PRINTER_INFO_7
cFarbprofil
d Druckerdaten
s Sicherheitsbeschreibung
g Globaler DevMode
m
Minimale Einstellungen
u Benutzer-DevMode
r Namenskonflikte lösen
f Namen
erzwingen
p Anschluss zuordnen |
/u | Verwendet den vorhandenen Druckertreiber,
sofern bereits einer installiert ist |
/t | [#] Nullbasierte Indexseite zum Starten |
/v | [Version] Eine der folgenden Treiberversionen:
Windows 95 oder 98 | Windows NT 3.1 | Windows NT 3.5 oder 3.51 | Windows
NT 3.51 | Windows NT 4.0 | Windows NT 4.0 oder 2000 | Windows 2000 |
/w | Fordert einen Treiber an, wenn der angegebene
Treiber nicht in der INF-Datei gefunden wird. |
/y | Richtet den Drucker als
Standarddrucker ein. |
/Xg | Liest Druckereinstellungen. |
/Xs | Richtet
Druckereinstellungen ein. |
/z | Gibt diesen Drucker nicht automatisch frei. |
/Z | Gibt diesen Drucker frei. Verwendung nur mit der Option
/if möglich. |
/? | Zeigt diese Hilfemeldung an. |
@ | [Datei] Datei mit Befehlszeilenargumenten |
Die volle Hilfe,
printui.dll /? ist etwas länger, hat viele Beispiele und wen es interessiert:
hier als Download.
Beispielszenario:
Man muss allen Mitarbeitern eines Betriebes bestimmte Drucker eines Druckerservers bereitstellen. Das geht zwar auch über Gruppenrichtlinien aber oftmals hat dieser Weg entscheidende Nachteile, wo sich Scripte besser eignen.
Auf dem Server ist ein Druckserver eingerichtet, der Drucker mit allen Treibern (für das Serversystem und alle Clientsysteme (XP+7 32bit+64bit)) installiert und freigegeben.
Druckerinstallation per Netzwerk:
rundll32.exe printui.dll,PrintUIEntry /in /n "\\server\Canon iR400 EG"
|
/in steht für “install network printer”, /n gibt den Freigabenamen des Druckers (natürlich mit Verbindung des Servernamens) an.
Sollen mehrere Drucker eingerichtet werden empfielt es sich, das Konstrukt etwas auszubauen. Zum Beispiel kann man in dem Script abhängig von der Etage des Mitarbeiters auch gleich den richtigen Standarddrucker setzen lassen (Parameter /y).
Hier mein Scriptbeispiel:
@echo off
cls
echo Wo befindet sich Ihr Büro?
echo --------------------------
echo 1 - Erdgeschoss
echo 2 - 1. Obergeschoss
echo 3 - Dachetage
set /p etage=Eingabe (1/2/3):
if %etage%==1 set drucker=Drucker1
if %etage%==2 set drucker=Drucker2
if %etage%==3 set drucker=Drucker3
echo.
echo %drucker% wird als Standarddrucker eingerichtet.
echo.
:drucker1
echo Installiere Kopierer EG
if "%etage%"=="1" goto drucker1std
rundll32 printui.dll,PrintUIEntry /in /n "\\iqbserver\Kopierer EG" >> nul
if errorlevel 1 goto drucker1fehler
echo Installation erfolgreich
echo.
goto drucker2
:drucker1std
echo Definiere als Standarddrucker
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer EG" /y >> nul
if errorlevel 1 goto drucker1fehler
echo Installation erfolgreich
echo.
goto drucker2
:drucker1fehler
echo Bei der Installation des Kopierer EG ist ein Fehler aufgetreten.
echo.
:drucker2
echo Installiere Kopierer 1.OG
if "%etage%"=="2" goto drucker2std
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer 1.OG" >> nul
if errorlevel 1 goto drucker2fehler
echo Installation erfolgreich
echo.
goto drucker3
:drucker2std
echo Definiere als Standarddrucker
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer 1.OG" /y >> nul
if errorlevel 1 goto drucker2fehler
echo Installation erfolgreich
echo.
goto drucker3
:drucker2fehler
echo Bei der Installation des Kopierer 1.OG ist ein Fehler aufgetreten.
echo.
REM :drucker3
REM ... und so weiter
|
Das lässt sich mit beliebig vielen Druckern durchführen, die alle nacheinander auf dem Computer des Mitarbeiters eingerichtet werden. Verbunden mit
errorlevel kann man noch cleverer als ich hier reagieren, z.B. den Befehl
mit erhöhten Rechten erneut probieren o.Ä. (
CPAU Warnung, Nutzung auf eigene Gefahr)
Weitergabe oder Verwendung des Textes nur mit voller Quellen- und Autorangabe! Ich bitte euch, seid fair.