Windows Drucker Deployment

Wenn man auf wenigen Rechnern für viele User Drucker verteilen will und Windows per GPO nicht erlaubt einen "beigestellten Drucker" zu definieren (oder der Server es nicht kann), dann kann man sich mit verschiedenen Scripting-Tools helfen.

Das folgende CMD-Script legt mehrere Drucker an, wenn diese noch nicht verbunden sind, und definiert einen davon als Standarddrucker (der per Parameter übergeben werden kann):

@echo off

REM
REM %1 is default printers name
REM if it's not set, use :defaultsetting
REM


REM wenn der %1 Parameter NICHT übergeben wurde, springe zu "defaultsetting"
IF [%1]==[] goto defaultsetting

REM wähle Standarddrucker laut Parameter
set defaultprintername="\\server\%1%"
goto install

:defaultsetting
set defaultprintername="\\server\SWkonf"


:install
echo printer: %defaultprintername%


REM
REM add printer only if necessary
REM mind EXACT SHARE NAME (case sensitive!)
REM

set printershare=SWkonf
cscript %Windir%\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -l |find "%printershare%"
IF %ERRORLEVEL% == 1 (
rundll32.exe printui.dll,PrintUIEntry /in /n "\\server\%printershare%"
) ELSE (
echo %printershare% already installed
)

set printershare=SWOG
cscript %Windir%\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -l |find "%printershare%"
IF %ERRORLEVEL% == 1 (
rundll32.exe printui.dll,PrintUIEntry /in /n "\\server\%printershare%"
) ELSE (
echo %printershare% already installed
)

REM
REM define default printer (needs to be installed before)
REM
rundll32.exe printui.dll,PrintUIEntry /y /n %defaultprintername%

Das Script bedient sich 2er Tools zur Druckerverwaltung:

  1. rundll32.exe printui.dll,PrintUIEntry Ein eigentlich grafisches Tool, das sehr gut funktioniert um Drucker anzulegen oder zu entfernen. Es kann allerdings keine Liste von definierten Druckern auf die Konsole ausgeben.
    Weitere Infos hier:
  2. prnmngr.vbsEs VB-Script, das in einem Locale/Gebietsschema abhängigen unterordner lebt und ebenso einige Tools bietet. Weitere Infos hier:

Die Drucker werden nur verbunden, wenn sie nicht bereits verbunden sind. Das erspart hässliche unnötige Installer-Popups.

Wie man das für alle Benutzer eines Computers als GPO definiert, erkäre ich separat.