Drucker und Benutzer
Ein Netzwerkdrucker wird getauscht - wie finde ich heraus wer ihn alles verbunden hat?
Hallo zusammen,
in größeren Organisationen ist es üblich, dass es zwar Abteilungsdrucker gibt, der eine oder andere Benutzer aber auch gerne mal hier oder da druckt, vielleicht auch lieber auf dem Drucker im 1. OG weil der Farbe kann oder besser/schneller ist usw.. Mit anderen Worten - werden eines oder mehrere Großgeräte getauscht, ist es nicht immer ganz leicht herauszufinden, wer alles den Drucker benutzt, das wollen wir ja aber. Schließlich muss der neue Drucker auch wieder eingerichtet werden, denn auch wenn der Standarddrucker oftmals per Script verbunden wird, so ist das bei Userseitig eingebundenen Druckern normalerweise nicht der Fall.
Mittels der nachfolgenden Batch-Datei (die von jedem Benutzer über das Logon-Script aufgerufen werden muss) kann dies relativ einfach herausgefunden werden.
Vom Prinzip her arbeitet das Script so:
1. Registry-Export der Drucker des angemeldeten Users erzeugen
Das sieht dann in etwa so aus:
Recht unschön. Ausserdem interessieren und nicht alle Drucker also gehts weiter mit Punkt 2
2. Zu suchende Drucker im Export ausfindig machen und bei Erfolg in eine "saubere" Datei schreiben
Das wird eine einfache Auflistung aller gesuchten und gefundenen Drucker, sieht dann in etwa so aus:
usw.
3. Textdatei erstellen für jeden gesuchten und gefundenen Drucker und Eintragung des Benutzernamens. Bei bestehender Datei nur Eintragung des Benutzernamens.
Um nun eine Übersicht zu erhalten, welche User welchen der gesuchten Drucker verbunden hat, wird pro Drucker eine Datei angelegt und der Benutzer hineingeschrieben.
Die Datei heißt also z.B. Drucker1.csv und hat den Inhalt
Nun haben wir also eine Übersicht nach Drucker und können die Benutzer per Mail anschreiben oder was auch immer...
Hier nun der Quelltext für die Batch (funktioniert nur in Domänennetzwerken mit verbundenen Druckern):
Zunächst werden Variablen deklariert. Wichtig ist hierbei dass als Ausgabepfad ein Verzeichnis verwendet wird, in dem alle Benutzer Schreibrechte haben.
Wurde das Script schon einmal ausgeführt, aber abgebrochen, so werden die temporär benötigten Dateien hiermit gelöscht, um Doppeleinträge zu vermeiden.
Danach wird der Registry-Export erzeugt:
Hier werden nun nacheinander die gewünschten Drucker im Registry-Export gesucht und bei Auffinden wird der Benutzername über die temporäre Textdatei total_installed_printers.txt in die endgültige Datei (z.B. Drucker1.csv) geschrieben
Danach noch ein goto :Ende um nicht in einer Endlosschleife hängen zu bleiben:
Und wie es sich gehört, räumen wir danach auf...
Ich hoffe die Anleitung ist soweit verständlich, dass man das Script nachbauen kann.
Würde mich freuen, wenn es dem einen oder anderen hilft...
Viele Grüße
Larz
Hallo zusammen,
in größeren Organisationen ist es üblich, dass es zwar Abteilungsdrucker gibt, der eine oder andere Benutzer aber auch gerne mal hier oder da druckt, vielleicht auch lieber auf dem Drucker im 1. OG weil der Farbe kann oder besser/schneller ist usw.. Mit anderen Worten - werden eines oder mehrere Großgeräte getauscht, ist es nicht immer ganz leicht herauszufinden, wer alles den Drucker benutzt, das wollen wir ja aber. Schließlich muss der neue Drucker auch wieder eingerichtet werden, denn auch wenn der Standarddrucker oftmals per Script verbunden wird, so ist das bei Userseitig eingebundenen Druckern normalerweise nicht der Fall.
Mittels der nachfolgenden Batch-Datei (die von jedem Benutzer über das Logon-Script aufgerufen werden muss) kann dies relativ einfach herausgefunden werden.
Vom Prinzip her arbeitet das Script so:
1. Registry-Export der Drucker des angemeldeten Users erzeugen
Das sieht dann in etwa so aus:
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Printers\Connections\
Printservername,,Druckername1
Printservername,,Druckername2
Printservername1,,Druckername1
HKEY_CURRENT_USER\Printers\Connections\
Printservername,,Druckername1
Printservername,,Druckername2
Printservername1,,Druckername1
Recht unschön. Ausserdem interessieren und nicht alle Drucker also gehts weiter mit Punkt 2
2. Zu suchende Drucker im Export ausfindig machen und bei Erfolg in eine "saubere" Datei schreiben
Das wird eine einfache Auflistung aller gesuchten und gefundenen Drucker, sieht dann in etwa so aus:
Druckername1
Druckername2
Druckername2
usw.
3. Textdatei erstellen für jeden gesuchten und gefundenen Drucker und Eintragung des Benutzernamens. Bei bestehender Datei nur Eintragung des Benutzernamens.
Um nun eine Übersicht zu erhalten, welche User welchen der gesuchten Drucker verbunden hat, wird pro Drucker eine Datei angelegt und der Benutzer hineingeschrieben.
Die Datei heißt also z.B. Drucker1.csv und hat den Inhalt
Benutzername1
Benutzername4
Benutzername5
Benutzername4
Benutzername5
Nun haben wir also eine Übersicht nach Drucker und können die Benutzer per Mail anschreiben oder was auch immer...
Hier nun der Quelltext für die Batch (funktioniert nur in Domänennetzwerken mit verbundenen Druckern):
Zunächst werden Variablen deklariert. Wichtig ist hierbei dass als Ausgabepfad ein Verzeichnis verwendet wird, in dem alle Benutzer Schreibrechte haben.
REM Variablen für Programm deklarieren
set Ausgabeverzeichnis=\\Domaenenname\Server\Gemeinsame_Freigabe
set Ausgabeformat=csv
Wurde das Script schon einmal ausgeführt, aber abgebrochen, so werden die temporär benötigten Dateien hiermit gelöscht, um Doppeleinträge zu vermeiden.
Danach wird der Registry-Export erzeugt:
REM Alte Text-Dateien werden falls vorhanden geloescht, neuer Registry-Export erzeugt
if exist %temp%\regdump_installed_printers.txt del %temp%\regdump_installed_printers.txt
if exist %temp%\total_installed_printers.txt del %temp%\total_installed_printers.txt
reg query HKEY_CURRENT_USER\Printers\Connections\ > %temp%\regdump_installed_printers.txt
Hier werden nun nacheinander die gewünschten Drucker im Registry-Export gesucht und bei Auffinden wird der Benutzername über die temporäre Textdatei total_installed_printers.txt in die endgültige Datei (z.B. Drucker1.csv) geschrieben
REM Durchsuchung des Registry-Exports nach den gewünschten Druckern
:Find_Drucker1
@echo --- Suche ersten Drucker ---
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker1.%Ausgabeformat% >nul && goto :Find_Drucker2
findstr "Drucker1" %temp%\regdump_installed_printers.txt>nul && @echo MFPC-102a >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%\Drucker1.%Ausgabeformat%
@echo ----------------------------
:Find_Drucker2
@echo --- Suche zweiten Drucker ---
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker2.%Ausgabeformat% >nul && goto :Find_Drucker3
findstr "Drucker2" %temp%\regdump_installed_printers.txt>nul && @echo Drucker2 >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%\Drucker2.%Ausgabeformat%
@echo -----------------------------
:Find_Drucker3
@echo --- Suche dritten Drucker ---
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker3.%Ausgabeformat% >nul && goto :Find_Drucker4
findstr "Drucker3" %temp%\regdump_installed_printers.txt>nul && @echo Drucker3 >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%\Drucker3.%Ausgabeformat%
@echo -----------------------------
:Find_Drucker4
@echo --- Suche vierten Drucker ---
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker4%Ausgabeformat% >nul && goto :eof
findstr "Drucker4" %temp%\regdump_installed_printers.txt>nul && @echo Drucker4 >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%Drucker4.%Ausgabeformat%
@echo -----------------------------
Danach noch ein goto :Ende um nicht in einer Endlosschleife hängen zu bleiben:
goto :Ende
Und wie es sich gehört, räumen wir danach auf...
:Ende
REM Loeschen der nicht mehr benoetigten, temporaeren Dateien
del %TEMP%\total_installed_printers.txt
del %TEMP%\regdump_installed_printers.txt
Ich hoffe die Anleitung ist soweit verständlich, dass man das Script nachbauen kann.
Würde mich freuen, wenn es dem einen oder anderen hilft...
Viele Grüße
Larz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126959
Url: https://administrator.de/contentid/126959
Ausgedruckt am: 22.11.2024 um 02:11 Uhr
1 Kommentar
Hi Larz,
warum immer so kompliziert?! Einfach über Batch ein Kix-Script aufrufen...da Lässt sich das Ganze mit 7 Zeilen realsieren:
Die entsprechenden Namen müssen eben noch ersetzt werden und das Script mit der Endung ".kix" gespeichert werden. Auf dem Netlogon das Kix entpacken und im Loginscript wie folgt aufrufen:
Fertig ist der Druckertausch... Funktioniert unter Windows 2000, XP, Vista und 7. Vorallem du musst nicht in der Registry rumbasteln.
Grüße,
Dani
warum immer so kompliziert?! Einfach über Batch ein Kix-Script aufrufen...da Lässt sich das Ganze mit 7 Zeilen realsieren:
If DelPrinterConnection ("ALTER DRUCKERNAME") = 0
? "Deleted printer connection...."
Endif
If ADDPRINTERCONNECTION ("\\server\druckerfreigabe") = 0
? "Added printer connection...."
Endif
....
"\\%logonserver%\netlogon\kix\kix.exe" "\\%logonserver%\netlogon\transfer_printer.kix"
...
Grüße,
Dani