Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Drucker und Benutzer

Anleitung Entwicklung Batch & Shell

Mitglied: Larz

Larz (Level 2) - Jetzt verbinden

12.10.2009, aktualisiert 21:23 Uhr, 9787 Aufrufe, 1 Kommentar

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:
! REG.EXE VERSION 3.0
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

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


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.
01.
REM Variablen für Programm deklarieren 
02.
set Ausgabeverzeichnis=\\Domaenenname\Server\Gemeinsame_Freigabe 
03.
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:
01.
REM Alte Text-Dateien werden falls vorhanden geloescht, neuer Registry-Export erzeugt 
02.
if exist %temp%\regdump_installed_printers.txt del %temp%\regdump_installed_printers.txt 
03.
if exist %temp%\total_installed_printers.txt del %temp%\total_installed_printers.txt 
04.
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
01.
REM Durchsuchung des Registry-Exports nach den gewünschten Druckern 
02.
:Find_Drucker1 
03.
@echo --- Suche ersten Drucker --- 
04.
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker1.%Ausgabeformat% >nul && goto :Find_Drucker2 
05.
findstr "Drucker1" %temp%\regdump_installed_printers.txt>nul && @echo MFPC-102a >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%\Drucker1.%Ausgabeformat% 
06.
@echo ---------------------------- 
07.
 
08.
:Find_Drucker2 
09.
@echo --- Suche zweiten Drucker --- 
10.
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker2.%Ausgabeformat% >nul && goto :Find_Drucker3 
11.
findstr "Drucker2" %temp%\regdump_installed_printers.txt>nul && @echo Drucker2 >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%\Drucker2.%Ausgabeformat% 
12.
@echo ----------------------------- 
13.
 
14.
:Find_Drucker3 
15.
@echo --- Suche dritten Drucker --- 
16.
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker3.%Ausgabeformat% >nul && goto :Find_Drucker4 
17.
findstr "Drucker3" %temp%\regdump_installed_printers.txt>nul && @echo Drucker3 >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%\Drucker3.%Ausgabeformat% 
18.
@echo ----------------------------- 
19.
 
20.
:Find_Drucker4 
21.
@echo --- Suche vierten Drucker --- 
22.
findstr "%USERNAME%" %Ausgabeverzeichnis%\Drucker4%Ausgabeformat% >nul && goto :eof 
23.
findstr "Drucker4" %temp%\regdump_installed_printers.txt>nul && @echo Drucker4 >> %temp%\total_installed_printers.txt && @echo %USERNAME% >> %Ausgabeverzeichnis%Drucker4.%Ausgabeformat% 
24.
@echo -----------------------------

Danach noch ein goto :Ende um nicht in einer Endlosschleife hängen zu bleiben:
01.
goto :Ende

Und wie es sich gehört, räumen wir danach auf...
01.
:Ende 
02.
REM Loeschen der nicht mehr benoetigten, temporaeren Dateien 
03.
del %TEMP%\total_installed_printers.txt 
04.
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
Mitglied: Dani
24.10.2009 um 00:36 Uhr
Hi Larz,
warum immer so kompliziert?! Einfach über Batch ein Kix-Script aufrufen...da Lässt sich das Ganze mit 7 Zeilen realsieren:
01.
If DelPrinterConnection ("ALTER DRUCKERNAME") = 0 
02.
  ? "Deleted printer connection...." 
03.
Endif 
04.
 
05.
If ADDPRINTERCONNECTION ("\\server\druckerfreigabe") = 0 
06.
  ? "Added printer connection...." 
07.
Endif
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:
01.
.... 
02.
"\\%logonserver%\netlogon\kix\kix.exe" "\\%logonserver%\netlogon\transfer_printer.kix" 
03.
...
Fertig ist der Druckertausch... Funktioniert unter Windows 2000, XP, Vista und 7. Vorallem du musst nicht in der Registry rumbasteln.


Grüße,
Dani
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows Tools
Automatischer FTP-Upload ohne angemeldeten Benutzer (5)

Frage von SarekHL zum Thema Windows Tools ...

Drucker und Scanner
USB-Drucker über virtuellen COM LPT- Port ansteuern (27)

Frage von magicman zum Thema Drucker und Scanner ...

Drucker und Scanner
gelöst PCL-Drucker drucken nur Hieroglyphen (5)

Frage von diwaffm zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...