84075
Goto Top

PROBLEM Netzwerkdrucker mit rundll PrintUI installieren

rundll32 printui.dll,PrintUIEntry /q /in /n \\druckerserverA 01-05?!?!?! \\druckerserverB 01-03?!?!?

hallo,

kann mir jemand sagen was ich genau im obigen Befehl eingeben muss wenn ich mehrere Drucker installieren möchte die auf verschiedenen Druckerservern liegen???

%druckerserverA% %druckerserverB% ???????????

DANKE im VORRAUS!

Content-Key: 128963

Url: https://administrator.de/contentid/128963

Printed on: April 16, 2024 at 08:04 o'clock

Member: Tommy70
Tommy70 Nov 09, 2009 at 13:16:11 (UTC)
Goto Top
Hallo

Auch wenn du die gleiche Frage noch 4 mal stellst wirst du deshalb nicht schneller eine Antwort erhalten.
Es kann eben etwas dauern bis sich jemand findet der dir weiterhelfen kann.
Mitglied: 84075
84075 Nov 09, 2009 at 13:22:29 (UTC)
Goto Top
face-smile hmmm da hast du wohl Recht. Ich warte und google eben weiter!
Member: Knumskull
Knumskull Nov 09, 2009 at 13:45:48 (UTC)
Goto Top
kannst du das ganze mal entwas genauer erläutern?

also ich nehme mal an, das du alle drucker der einzelnen Server installieren möchtest

also du könntest es z.B. so machen

for /d %%a in (druckserver01 druckserver02 druckserver03 druckserver04 druckserver05) do (
  rundll32 printui.dll,PrintUIEntry /q /in /n %%a
)

führt quasi für jeden "druckserver" den rundll32-Befehl aus.
Mitglied: 84075
84075 Nov 09, 2009 at 13:56:31 (UTC)
Goto Top
Hallo,

danke dir. Also ich habe ein Skript das mir die Netzwerkdrucker die in einer csv Datei abgelegt sind installiert wenn sich ein User anmeldet. Was installiert worden ist wird in einer log datei abgelegt. Bisher habe ich nur einen Druckerserver benutzt. Nun ist es aber so das verschiedene User unterschiedliche Drucker benutzen die auf dementsprechend verschiedenen Servern liegen...

set L=%temp%\ListPrinters.vbs

%L% echo Set Printers=WScript.CreateObject("WScript.Network").EnumPrinterConnections:For i=1 To Printers.Count Step 2:WScript.Echo Printers.Item(i):Next


rundll32 printui.dll,PrintUIEntry /q /in /n \\printserver02\%%a

echo Drucker %%a wird auf %computername% installiert

echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\hostname\tmp\printer.log"

)
Member: Knumskull
Knumskull Nov 09, 2009 at 14:03:47 (UTC)
Goto Top
steht irgendwo, welcher drucker auf welchem printserver liegt?

wie sieht eine ausgabe von
for /f "tokens=1* delims=," %%i in ('findstr /i /b "%username%" "\\hostname\tmp\printer.csv"')  

aus und wie sieht eine gesamte Zeile in \\hostname\tmp\printer.csv aus?
Mitglied: 84075
84075 Nov 09, 2009 at 14:09:34 (UTC)
Goto Top
Nein das steht nirgends, da müsste ich auf jeden Server drauf um zu sehen welcher Server wo liegt. Eigentlich sind die ganzen Drucker auf 3-4 Servern hinterlegt..
Bsp.: druckerserver1 druckerserver2 druckerserver3 druckerserver4

Dachte mir er soll die drucker aus der csv auslesen und auf den vier servern danach suchen. Wenn er Sie findet soll er Sie installieren. in meinem Skript ist eben nur einer angegeben, funktioniert zwar aber eben nur auf einen. Möchte eben das er alle 4 server durchgeht.

Eine Zeile aus meiner printer.csv sieht so aus:

user,drucker
x09678,pr4567
Member: icsat
icsat Nov 09, 2009 at 14:12:23 (UTC)
Goto Top
Und ich dachte das Problem sei bereits gelöst.

Netzwerdrucker Batch Problem
Mitglied: 84075
84075 Nov 09, 2009 at 14:13:01 (UTC)
Goto Top
nein dasd Problem wurde nur umgeschrieben
Member: Knumskull
Knumskull Nov 09, 2009 at 14:19:21 (UTC)
Goto Top
for /f "tokens=1* delims=," %%i in ('findstr /i /b "%username%" "\\hostname\tmp\printer.csv"') do (  
  for %%a in (%%j) do ( 
    cscript //nologo %L%|findstr /i "%%a">nul || (  
	  for /d %%b in (druckserver01 druckserver02 druckserver03 druckserver04 druckserver05) do ( 
	    rundll32 printui.dll,PrintUIEntry /q /in /n \\%%b\%%a
		if not errorlevel 1 (
		  echo Drucker %%a wird auf %computername% installiert
		  echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\hostname\tmp\printer.log"  
		)
	  )       
    )
  )
)

versuchs mal damit
Mitglied: 84075
84075 Nov 09, 2009 at 14:27:56 (UTC)
Goto Top
im grundegenommen funktioniert das ja auch aber beim ausführen versucht er alle drucker zuerst auf einem dann den anderen und zu guter letzt auf dem vierten zu suchen....irgendwo findet er sie dann aber es kommen immer Fehlermeldungen:

Beispiel:

drucker 1 liegt auf server1 aber er sucht ihn auch auf server 2,3 und 4 . Das gleiche macht er auf allen anderen auch. Installiert werden sie aber es kommen immer diese fehlermeldungen:

Druckerverbindung mit drucker 1 auf druckerserver2 kann nicht hergestellt werden. Entweder ist der Druckername ungültig oder der angegebene Drucker ist nicht mit dem Server verbunden....

muss ich am Ende wirklich ne Liste erzeugen wo drin steht welcher drucker auf welchem Server liegt??? Kann er nicht selbstständig danach suchen und wenn er ihn findet installieren, wenn nicht einfach weitersuchen bis er ihn findet?!?!?!
Member: Knumskull
Knumskull Nov 09, 2009 at 14:32:30 (UTC)
Goto Top
rundll32 printui.dll,PrintUIEntry /q /in /n \\%%b\%%a  >NUL

so kannst du die Ausgabe unterdrücken

mit 2>NUL nur die ErrorOut
Mitglied: 84075
84075 Nov 09, 2009 at 15:17:32 (UTC)
Goto Top
immer noch die selben fehlermeldungen....Drucker werden verbunden nur die obigen Meldungen poppen wieder auf! liegt wohl daran weil er jeden drucker auf jeden Server sucht und wenn er den dort nicht findet Fehleranzeige! Wenn er ihn findet verbindet er ihn...Das lästige hin und her klicken nervt...sollte im silent mode gehen und am besten so das man nix mitbekommt
Mitglied: 84075
84075 Nov 09, 2009 at 16:00:56 (UTC)
Goto Top
ach PS....die Fehlermeldung ist eine Windows Meldung ....versuche Drucker xyz zu verbinden....das versucht er auf jeden angegebenen Server und ich muss alle meldungen mit OK bestätigen
Member: Knumskull
Knumskull Nov 09, 2009 at 17:48:19 (UTC)
Goto Top
Ja, habe ich auch mitbekommen.
Ich habe das bei mir mal ausprobiert.
mit
rundll32 printui.dll,PrintUIEntry  /?

bekommt man ja alle Optionen. Da ist auch eine Option /G ... mit dem Argument 'w' soll da die Windows-Oberfläche verschwinden ... aber irgendwie klappt das nicht.

Also als Option sehe ich jetzt 2 Ziele.

1. Möglichkeit zum überprüfen, ob der zu installierende Server wirklich auf dem Server vorhanden ist
2. Irgendwie den Fehler unterdrücken.

zu beidem ist mir bis jetzt noch keine Möglichkeit eingefallen. Vielleicht habe ich ja irgendwann noch eine Idee face-smile
Member: icsat
icsat Nov 09, 2009 at 19:44:44 (UTC)
Goto Top
Was passiert denn, wenn du folgende Zeile verwendest?
rundll32 printui.dll,PrintUIEntry /q /in /Gw /n \\%%b\%%a /y

Gruß
icsat
Mitglied: 84075
84075 Nov 10, 2009 at 08:41:36 (UTC)
Goto Top
Hallo!

erst mal vielen Dank für deine Hilfe. In der Tat verschwindet mit /Gw und dann /y die Windows Meldung jedoch installiert er mir dann keinen Drucker. Erst wenn ich /y entferne installiert er die Drucker aber mit der blöden Windows Fehlermeldung die 3-4mal erscheint. Hier das Skript:


set L=%temp%\ListPrinters.vbs

%L% echo Set Printers=WScript.CreateObject("WScript.Network").EnumPrinterConnections:For i=1 To Printers.Count Step 2:WScript.Echo Printers.Item(i):Next

for /f "tokens=1* delims=," %%i in ('findstr /i /b "%username%" "\\HOSTNAME\TMP\printer.csv"') do (
for %%a in (%%j) do (
for /d %%b in (druckserver02 druckserver05) do (
rundll32 printui.dll,PrintUIEntry /q /in /Gw /n \\%%b\%%a /y
if not errorlevel 1 (
echo Drucker %%a wird auf %computername% installiert
echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\HOSTNAME\TMP\PRINTER.log"
)
)
)
)
)
echo Drucker %%a wird auf %computername% installiert

echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\HOSTNAME\TMP\PRINTER.log"

)
Member: Knumskull
Knumskull Nov 10, 2009 at 08:53:12 (UTC)
Goto Top
net print \\server\drucker >NUL
if not errorlevel 1 (
  echo Drucker is da
) else (
  echo Drucker is weg!
)
Baue das mal in dein Skript mit ein ... könnte dir weiterhelfen
Mitglied: 84075
84075 Nov 10, 2009 at 09:36:46 (UTC)
Goto Top
- An welcher stelle soll ich das einbauen??
- Meinst du ich soll die Optionen /Gw und /y weglassen?
Member: Knumskull
Knumskull Nov 10, 2009 at 10:04:09 (UTC)
Goto Top
Zitat von @84075:
- An welcher stelle soll ich das einbauen??

for /d %%b in (druckserver02 druckserver05) do (
  net print \\%%b\%%a >NUL
  if not errorlevel 1 (
    rundll32 printui.dll,PrintUIEntry /q /in /n \\%%b\%%a
    echo Drucker %%a wird auf %computername% installiert
    echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\HOSTNAME\TMP\PRINTER.log"  
  )
)

das net print versucht eine Verbindung zu dem Drucker aufzubauen ... wenn der nicht da ist, läuft es in einen Fehler, aber es erscheint keine Windows-Fehlermeldung

- Meinst du ich soll die Optionen /Gw und /y weglassen?
ja
Mitglied: 84075
84075 Nov 10, 2009 at 10:23:53 (UTC)
Goto Top
also nun poppt keine Fehlermeldung mehr auf und er installiert die Druckerface-smile Die Fehler erscheinen zwar in der batch, aber egal. ODer kann man das CMD Fenster unterdrücken,sodass man es gar nicht sieht?
PS:DANKE schonmal vorab!
Member: Knumskull
Knumskull Nov 10, 2009 at 11:10:00 (UTC)
Goto Top
Zitat von @84075:
also nun poppt keine Fehlermeldung mehr auf und er installiert die
Druckerface-smile Die Fehler erscheinen zwar in der batch, aber egal. ODer
kann man das CMD Fenster unterdrücken,sodass man es gar nicht
sieht?

versuch mal folgendes face-smile

for /d %%b in (druckserver02 druckserver05) do (
  net view \\%%b 2>NUL | find "%%a" >NUL  
  if not errorlevel 1 (
    rundll32 printui.dll,PrintUIEntry /q /in /n \\%%b\%%a
    echo Drucker %%a wird auf %computername% installiert
    echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\HOSTNAME\TMP\PRINTER.log"  
  )
)

PS:DANKE schonmal vorab!

kein Thema