Top-Themen

Aktuelle Themen (A bis Z)

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

Batch: Umzug auf neuen Printserver - Drucker aller User per Skript migrieren

Mitglied: narthan

narthan (Level 1) - Jetzt verbinden

12.12.2013 um 10:57 Uhr, 9092 Aufrufe, 4 Kommentare, 2 Danke

Guten Tag Administratoren!


Es geht um ein lästiges Thema, mit dem ich selbst zu arbeiten hatte und zudem ich keine vollständige und zufriedenstellende Lösung im Internet gefunden habe. Mit ein wenig Hilfe und eigener Arbeit bin ich auf eine - in meinen Augen - schöne Lösung gekommen und stelle sie Euch hiermit ebenfalls zur Verfügung.


__Problemstellung__:

Es wird ein neuer Printserver in der Firma eingerichtet und die Drucker aller User müssen auf den neuen Druckserver umgestellt werden. Um dies zu tun gibt es mehrere Möglichkeiten:
1. von User zu User laufen und alles manuell neu installieren (subjektive Einschätzung: hoher Aufwand)
2. via GPO (Gruppenrichtlinien) die neuen Drucker für unterschiedliche User zuweisen (subjektive Einschätzung: geringer Aufwand)
3. unten beigefügte Batch mit dem Anmeldeskript ausführen lassen (subjektive Einschätzung: geringer Aufwand)


__Optionsauswahl__:

In meinem Fall spielte Option 1 von Beginn an keine Rolle, aufgrund des hohen Zeitaufwands bei so vielen Mitarbeitern im Unternehmen.
Option 2 ist eine sehr gute Möglichkeit dieses Problem lösen, und für die meisten bestimmt die einfachste und bequemste Lösung. Hierzu findet man im world wide web auch eine Menge Material zum Nachlesen und die meisten "Kenner der Problemstellung" würden diese auch beim Nachfragen empfehlen.
Im meinem Fall wiederum, kam die Option 2 allerdings aufgrund von firmeninternen Regularien ebenfalls nicht in Frage...
Infolgedessen werde ich nun denen, die dieses Problem mit Hilfe der Option 3 lösen wollen bzw. müssen, weil 1 und 2 nicht zur Debatte stehen, meine Resultate präsentieren und erläutern.


__Informationen & Voraussetzungen__:

- sämtliche User des Unternehmens verwenden WINDOWS 7 (wichtig für Batch-Abfrage: Standarddrucker, nähere Erläuterung unten)
- alle User verfügen an ihrem eigenen PC über Admin-Rechte
- der ALTE Printserver war ein Windows Server 2003
- der NEUE Printserver ist ein Windows Server 2012 R2
- Programm GnuWin32 (sed for Windows, __ohne__ Sources) installiert (1x auf Server, nicht auf jedem einzelnen PC!)
- Programm con2prt.exe (keine Installation notwendig, direkt verwendbar) im selben Ordner wie sed.exe
(Direktdownload für con2prt.exe findet Ihr HIER! bzw. die Seite mit dem Mirror HIER!


__BATCH__:

01.
@ECHO off
02.
SETLOCAL enabledelayedexpansion
03.

04.
SET "gesuchte_datei=C:\temp\Printer_Migration.txt"
05.
IF NOT EXIST %gesuchte_datei% GOTO fortfahren
06.
GOTO END
07.
:fortfahren
08.
ECHO Bitte warten...
09.
cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -g > C:\temp\stndprnt.txt
10.

11.
con2prt.exe /f > C:\temp\drucker.txt
12.

13.
sed.exe "s/\xd//" "C:\temp\drucker.txt" > "C:\temp\druckersed.txt"
14.
SET "quell_datei=C:\temp\druckersed.txt"
15.
SET "ziel_datei=C:\temp\druckersedNEU.txt"
16.
SET "suchen_nach=ALTERSERVER"
17.
SET "ersetzen_durch=NEUERSERVER"
18.
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)
19.
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)
20.
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
21.
SET zeile=%%i& CALL :ersetzen !zeile!
22.
)
23.
GOTO :weiter
24.
:ersetzen
25.
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!
26.
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
27.
GOTO :eof
28.
:weiter
29.

30.
SET "quell_datei=C:\temp\stndprnt.txt"
31.
SET "ziel_datei=C:\temp\stndprntNEU.txt"
32.
SET "suchen_nach=ALTERSERVER"
33.
SET "ersetzen_durch=NEUERSERVER"
34.
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)
35.
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)
36.
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
37.
SET zeile=%%i& CALL :ersetzen !zeile!
38.
)
39.
GOTO :weiter
40.
:ersetzen
41.
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!
42.
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
43.
GOTO :eof
44.
:weiter
45.
FOR /f "tokens=5 delims= " %%i IN (C:\temp\druckersedNEU.txt) DO con2prt.exe /c %%i
46.
SET "Textdatei=C:\temp\stndprntNEU.txt"
47.
FOR /f "tokens=4" %%s IN ('findstr /c:"Standarddrucker" "%Textdatei%" ^|findstr /n "^" ^|findstr "1:"') DO con2prt.exe /cd %%s
48.
ECHO Diese Datei darf nicht gelöscht werden^^! > C:\temp\Printer_Migration.txt
49.

50.
DEL C:\temp\drucker.txt 
51.
DEL C:\temp\druckersed.txt
52.
DEL C:\temp\druckersedNEU.txt
53.
DEL C:\temp\stndprnt.txt
54.
DEL C:\temp\stndprntNEU.txt
55.
GOTO ENDE
56.
:END
57.
ECHO Die Migration des Printservers wurde auf diesem PC bereits durchgefuehrt^^!
58.
:ENDE

__Erläuterung des Codes__:

Zeilen 4-7 & Zeile 48:
Da das Skript nicht bei jedem Anmeldevorgang erneut ausgeführt werden soll - da sonst bei jedem Start die installierten Drucker deinstalliert und wieder neuinstalliert werden - wird in Zeile 48 nach erstmaligen erfolgreichen Ablauf des Batchskripts eine Textdatei erstellt, die nicht gelöscht werden sollte (außer man möchte die De- und Neuinstallation beim nächsten PC-Start ;) ). In den Zeilen 4-7 prüft das Skript, ob diese Datei existiert. Falls ja, springt das Skript ans Ende und ist fertig. Falls die Datei nicht existiert, wird das Skript ausgeführt und die Datei wird erstellt.

Zeile 9:
Hier wird mit Hilfe eines von Windows hinterlegten Skripts der Drucker ermittelt, der vor der Servermigration als Standarddrucker eingerichtet ist. Das Ergebnis wird in einer Text-Datei gespeichert, damit nach Migration der gleiche Standarddrucker wieder eingestellt werden kann.
(!) Wichtig: Der Pfad und ggf. der Name des Skripts können von Betriebssystem zu Betriebssystem variieren. Der hier aufgeführte Pfad bezieht sich auf Windows 7 Systeme.

Zeile 11:
Mit Hilfe von "con2prt.exe /f" werden alle installierten Drucker entfernt. Damit die gleichen Drucker wieder eingerichtet werden können, wird das Ergebnis ist einer Text-Datei gespeichert.

Zeile 13:
con2prt kann nicht mit Zeilenumbrüchen umgehen. Wenn mehrere Drucker installiert waren und entfernt werden, dann gibt con2prt eine Fehlermeldung beim Versuch der erneuten Installation wieder. Daher wird mit Hilfe von sed.exe die gerade erstellte Text-Datei überarbeitet und das Resultat in einer neuen Text-Datei gespeichert.

- An dieser Stelle nochmals Danke an Endoro , der mir dabei geholfen hat!

Zeilen 14-28:
Da wir aber nicht die selben Drucker des ALTEN Druckservers wieder installieren möchte, weil das relativ sinnfrei wäre, muss der Servername in der zuvor durch sed bearbeiteten Text-Datei durch den Namen des NEUEN Printservers ersetzt werden. Die einzigen Änderungen die Ihr vornehmen müsst, sind die ersten 4 SET-Zeilen. Das Ergebnis wird in der Ziel-Datei gespeichert.

Zeilen 30-44:
Auch der Servername des Standarddruckers, den wir oben ermittelt und separat in einer Text-Datei abgespeichert haben, muss durch den NEUEN Namen ersetzt werden. Gleiche Prozedur, gleiche Änderungen notwendig.

Zeile 45:
Mit Hilfe des "con2prt.exe /c" Befehls werden die zuvor ursprünglich installierten Drucker, nun jedoch unter NEUEM Server installiert.

Zeilen 46-47:
Mit Hilfe des "con2prt.exe /cd" Befehls wird der eingerichtet, der in der Textdatei durch das Windows-spezifische Skript abgespeichert wurde.

Zeile 48:
s.o.

Zeilen 50-54:
Alle für das Skript notwendigen Text-Dateien, bis auf die für den weiteren Verlauf relevante Datei aus Zeile 48, werden gelöscht, da sie nicht mehr benötigt werden.



Ich hoffe es ist alles verständlich formuliert und falls ich auch nur einer weiteren Person damit helfen kann/konnte, freue ich mich.

Grüße, narthan
Mitglied: qualidat
12.12.2013, aktualisiert um 14:29 Uhr
Wenn der Druckserver über seinen Namen aufgelöst wird, dann nenn doch den Neuen genau so wie den Alten (der dann vom Netz muss) und gut ist - oder nicht?
Bitte warten ..
Mitglied: narthan
13.12.2013 um 08:21 Uhr
Moin qualidat

Zitat von qualidat:

Wenn der Druckserver über seinen Namen aufgelöst wird, dann nenn doch den Neuen genau so wie den Alten (der dann vom
Netz muss) und gut ist - oder nicht?

Theoretisch liegst du damit richtig, allerdings wurde in unserem Bsp. der alte Druckserver nicht aufgelöst. Über ihn laufen noch diverse alte Programme, die erst in den kommenden Wochen erneuert werden. Daher blieb nur ein neuer Name übrig ;) So konnten wir übrigens auch die Treiber vom alten auf den neuen Server packen, ohne erneutes Heraussuchen im Internet.

Gruß, narthan
Bitte warten ..
Mitglied: Dani
26.12.2013 um 22:20 Uhr
Zitat von qualidat:

Wenn der Druckserver über seinen Namen aufgelöst wird, dann nenn doch den Neuen genau so wie den Alten (der dann vom
Netz muss) und gut ist - oder nicht?
Das wird z.B. schwer wenn es viele Drucker sind. Wir haben auf einem Printserver ca. 400 Drucker. Das dauert seine Zeit. Oft wurden spezielle Einstellungen hinterlegt. Somit kann ich auf den alten Server nachschauen und übernehmen.
Vllt wäre es sinnvoll den alten und neuen Printservernamen am Anfang abzufragen um diese später in Variable zu wenden?!


Grüße,
Dani
Bitte warten ..
Mitglied: spankyham98
26.01.2016 um 15:43 Uhr
Hallo,

wir sind aktuell dabei mit der o. g Batchdatei unsere User auf einen neuen Printserver umzuziehen. Angepasst haben wir dafür bisher folgendes:

- Zeilen 16, 17, 32 und 33 mit useren entsprechenden Printservernamen gefüllt
- alle Zeilen angepasst die "C:\temp" als Verzeichnis anzeigen -> ersetzt durch einen Laufwerksbuchstaben, auf welchen der User Vollzugriff hat
- Programm GnuWin32 auf beiden Printservern installiert
- angepasste Batchdatei, con2prt.exe, benötigte Programmbibliotheken (libiconv2.dll, libintl3.dll, regex2.dll) von sed.exe und sed.exe in ein Verzeichnis abgelegt auf welches der User Vollzugriff hat

Testweise hat die Änderung bei einem User schon funktioniert, der die Batchdatei manuell ausgeführt hat.

Leider scheitert der Versuch die Batchdatei als Anmeldeskript über eine GPO zu verteilen... Die Batchdatei wurde dafür lediglich als Anmeldeskript unter User Configuration->Policies->Windows Settings->Skripts(Anmelden/Abmelden) abgelegt. Nach der Anmeldung taucht die Textdatei "Printer_Migration" im angegebenen Verzeichnis auf, die alten Drucker wurden allerdings nicht ersetzt.

Gibt es jemanden der dies bereits über eine GPO erfolgreich durchgeführt hat?

Gruß
spankyham98
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Kleines Treesize Bash Skript
Tipp von MKLindnerBatch & Shell1 Kommentar

Ich Gebe euch mal ein kleines Bash Skript: Vielleicht Hilft es jemandem Viel Spass damit

Exchange Server

Exchange 2007 Sp3 Searchindex kann nicht neu aufgebaut werden - Abhilfe

Tipp von DerWoWussteExchange Server2 Kommentare

Nützlich für alle, die einen Exchange 2007 SP3 ohne Internetverbindung nutzen und den Index neu erstellen wollen, dabei aber ...

Windows Server

Windows Updates Client PC zurücksetzen und neu mit WSUS syncen

Erfahrungsbericht von SystembastlerWindows Server

Hallo Admins, kurzes Feedback zu einer aktuellen Situation. Ich musste zwar nicht lange im Netz nach einer Lösung suchen, ...

MikroTik RouterOS

Mikrotik Skript: E-Mail Benachrichtigung über neue MAC-Adressen im Netzwerk

Tipp von colinardoMikroTik RouterOS5 Kommentare

Servus Kollegen, hatte vor kurzem einen Kunden der folgendes Anliegen hatte: Es sollte über jede neu auftauchende MAC-Adresse für ...

Neue Wissensbeiträge
Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 1 StundeInternet

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 22 StundenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Windows 10

Windows 10 - Programme laufen schneller, wenn Sie mit Administratorrechten ausgeführt werden

Erfahrungsbericht von 1Werner1 vor 2 TagenWindows 1013 Kommentare

Moin, das wollte ich erst nicht glauben, aber es ist so. Wenn Ihr ein Programm mit Administratorrechten unter Windows ...

Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 3 TagenSicherheits-Tools8 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Heiß diskutierte Inhalte
Hardware
Telefonanlagen - Welche gibt es
Frage von Xaero1982Hardware38 Kommentare

Nabend Zusammen, ich suche eine neue TK Anlage und mein Auftraggeber will jetzt was völlig neues - State of ...

Server-Hardware
Kompatibilität Tray für HP Proliant DL385 G10 vs. G8, G9
Frage von chris123Server-Hardware19 Kommentare

Hallo, weiß einer der hier anwesenden, ob die Trays für 2,5 " HDDs zwischen einem DL 385 G10 und ...

Outlook & Mail
Office 365 mit Email-Profil installieren
gelöst Frage von 139221Outlook & Mail18 Kommentare

Hallo, kurz zu meiner Person: Vor ungefahr 10 Jahren habe ich eine Umschuldung zum Fachinformatiker für Systemintegration gemacht aber ...

LAN, WAN, Wireless
Intel(R) PRO Wireless 3945ABG
gelöst Frage von Leon509LAN, WAN, Wireless15 Kommentare

Hallo, habe ein Laptop Fujitsu (Intel, 4GB, 2GHz, Windos10, Intel(R) PRO/Wireless 3945ABG ) ein O2 DSL Anschluss Home50. Leider ...