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

Bereinigung alter Druckserver Umstellung an den Clients

Frage Microsoft Windows Server

Mitglied: Chrischtian

Chrischtian (Level 1) - Jetzt verbinden

01.08.2012, aktualisiert 13:20 Uhr, 2255 Aufrufe, 1 Kommentar

Hallo zusammen, stehe gerade hier vor einem mittelgroßen Problem.
Ausgangssituation: ca 450 Drucker, ca 1500 Clients (zum großen Teil noch XP),
zwei Printserver (Windows 2003 und Windows 2008 R2). Alle Drucker vom 2003 Druckserver wurden von mir schon auf dem 2008er angelegt. Die Clients können von mehreren Usern verwendet werden, natürlich ist bei den meisten noch der Pfad zu dem alten Printserver vorhanden. Neu ausgelieferte Clients oder Drucker bekommen natürlich nur noch den aktuellen Printserver zugewiesen.

Die Zuweisung der Drucker erfolgte via Netinstall, leider sind die Drucker dort teilweise nicht mehr aktuell, die Listen veraltet. Zudem de-installiert Netinstall die einmal zugewiesenen Drucker nicht mehr.Was teilweise zu Problemen führt. Zudem sind die Drucker per Benutzer zugewiesen. Und es können sich wie gesagt mehrere Benutzer an einem Client anmelden.

Durch eine WMI Abfrage am Server weiß ich welcher Benutzer von welchem Drucker im letzten Monat gedruckt hatte.
Allerdings ohne den dazugehörigen Client...

Leider sehe ich im Netinstall nicht alle Benutzer welche den Client nutzen, sondern immer nur die Person welche sich zuletzt angemeldet hatte. Das einzige was man als Vorteil nennen könnte ist, dass Netinstall die Drucker generell für alle User installiert.

Aber diese Netinstall-Lösung ist imo alles andere als effizient und optimal, ich habe zwar eine Bastellösung welche
via PSexec und nem kleinen Script alle Drucker vom zuvor ausgewählten Client herunter haut, aber ich müsste Im Gegenzug dann auch den jeweiligen Drucker im Netinstall pro Client wieder eintragen. Und welche Drucker dies genau sein sollten kann ich nur vermuten, die die User sich mit der Zeit auch selbst Drucker hinzufügen konnten und die Drucker im Netintsall, wie schon gesagt, zum Teil veraltet sind.

Ich habe in meinem Batchscript keine Abfrage drin, welcher mir die beinhalteten Drucker der Clients ausliest... Auch sehe ich nicht genau welcher User den Client mitbenutzt.

Entweder ich mache mit der Batch (mit zukünftiger Abfrage der Drucker/User) und dem Netinstall weiter.
Wobei ich im Batchscripting eher eine Niete bin^^

Oder ich suche mir eine andere bessere Methode aus, was meint ihr? Wäre z.B eine Verteilung und vor allem eine De-Installation über eine GPO nicht wesentlich sinnvoller!?

Oder was gibt es sonst noch für Ansätze, stehe gerade etwas auf dem Schlauch..

Schon mal ein Danke fürs Lesen

Mitglied: Karo
01.08.2012 um 13:54 Uhr
Moin,

ich habe auch mal massenweise Drucker verschieben und die Pfade neu setzen müssen. Dafür habe ich folgendes Script gebastelt.

- Das Script wird von jedem User aufgerufen.
- Das Script benötigt die eine Datei mit dem Inhalt \\SERVER\ALTER_DRUCKER;\\SERVER\NEUER_DRUCKER (in diesem Script ist es die Printers.TXT).
- Beides (Script und Printers.txt) sollte beim Logon zugreifbar sein (NETLOGON-Share).

Das Script schaut bei jedem User nach den Druckern, ist dieser (erste Eintrag in Zeile von Printers.txt) vorhanden, dann ersetzen durch neuen Drucker (zweiter Eintrag in Zeile von Printers.txt).

Wenn Du eine Liste abarbeiten willst in der nur Drucker gelöscht werden sollen, dann bei 'NEW MAPPING auskommentieren und dies mit einer extra Liste als zusätzliches Script laufen lassen.


01.
' Remap Printers for Users 
02.
03.
' Karo , 08.09.2010 
04.
' With this script you can change the mapping from Printernames 
05.
' OLDNAME to NENAME in a Textfile 
06.
' Syntax in TXT = \\SERVER\PRINTERNAMEOLD;\\SERVER\PRINTERNAMENEW 
07.
08.
' 20100908 Initial 
09.
' 20100909 Set Default Printer 
10.
' 20100910 Added Loop for check if Printer connected after renaming 
11.
 
12.
 
13.
' Set printers 
14.
' ****************************** 
15.
Const HKEY_CURRENT_USER = &H80000001 
16.
Const HKEY_LOCAL_MACHINE = &H80000002 
17.
 
18.
On Error Resume Next 
19.
Dim objNetwork, fs, fsFILE 
20.
Dim Counter, CounterU, aryPrinter(999), aryPrinterU(100), strComputer, strUsername 
21.
Dim splPrinter, x, y, fstemp, DefPrinter 
22.
Set objNetwork = CreateObject("WScript.Network") 
23.
Set fs = CreateObject("Scripting.FileSystemObject") 
24.
Set fstemp = fs.GetSpecialFolder(2) 
25.
wscript.echo ("The path to your TEMP folder is '" & fstemp & "'." ) 
26.
 
27.
'COPY FILE TO TEMP 
28.
'wscript.echo ("\\DOMAIN\sysvol\DOMAINNAME\scripts\printers.txt") 
29.
Set fsFILE = fs.GetFile("\\DOMAIN\sysvol\DOMAINNAME\scripts\printers.txt") 
30.
fsFILE.copy (fstemp & "\printers.txt") 
31.
 
32.
'READ FILE 
33.
Set fsFILE = fs.OpenTextFile(fstemp & "\printers.txt") 
34.
Counter = 0 
35.
Do Until fsFILE.AtEndOfStream 
36.
	Counter = Counter + 1 
37.
	aryPrinter(Counter) = fsFILE.Readline 
38.
	'wscript.echo Counter & " ---- " & aryPrinter(Counter) 
39.
Loop 
40.
 
41.
strComputer = "." 
42.
 
43.
'Read User Printer Connections 
44.
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
45.
    strComputer & "\root\default:StdRegProv") 
46.
CounterU = 0 
47.
strKeyPath = "Printers\Connections" 
48.
oReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeys 
49.
For Each subkey In arrSubKeys 
50.
	CounterU = CounterU + 1 
51.
	aryPrinterU(CounterU) = UCase(Replace(subkey,",","\")) 
52.
Next 
53.
 
54.
'Get Current Username 
55.
strUsername = objNetwork.UserName 
56.
wscript.echo strUsername & " - Mapped Printers: " & CounterU 
57.
'READ MAPPED PRINTERS FROM USER 
58.
strComputer = "." 
59.
Set objWMIService = GetObject("winmgmts:" _ 
60.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
61.
 
62.
Set colInstalledPrinters =  objWMIService.ExecQuery _ 
63.
    ("Select * from Win32_Printer") 
64.
Y = 0 
65.
DefPrinter = "FALSE" 
66.
 
67.
For Each objPrinter in colInstalledPrinters 
68.
  For y = 1 to CounterU 
69.
	If InStr(1,UCase(aryPrinterU(Y)),UCase(objPrinter.Name),1) > 0 Then 
70.
  wscript.echo "##################################################" 
71.
  WScript.echo "SEARCH: " & aryPrinterU(Y) 
72.
   For x = 1 to Counter 
73.
 		splPrinter=Split(aryPrinter(x),";") 
74.
     'COMPARE MAPPED PRINTERS WITH PRINTERS IN FILE 
75.
     If InStr(1,aryPrinterU(Y),splPrinter(0),1) > 0 Then 
76.
 		 WScript.echo aryPrinterU(Y) & " - " & splPrinter(0) 
77.
				 wscript.echo "-YES-" 
78.
 
79.
      		'Is Printer Default 
80.
      			'DefPrinter = "FALSE" 
81.
      		  If objPrinter.Default = "True" Then 
82.
      		  	DefPrinter = splPrinter(1) 
83.
      		  	wscript.echo "Default Printer Flag is set on " & splPrinter(0) & "" 
84.
	      		 ' Else 
85.
	      		 ' 	DefPrinter = "FALSE" 
86.
	      		 ' 	Exit For 
87.
      		  End If 
88.
 
89.
     		'DELETE OLD MAPPING 
90.
				wscript.echo "-Delete Old Mapping-" 
91.
     		objNetwork.RemovePrinterConnection splPrinter(0) 
92.
     				wscript.echo splPrinter(0) 
93.
 
94.
     		'NEW MAPPING 
95.
				wscript.echo "-New Mapping-" 
96.
     		objNetwork.AddWindowsPrinterConnection splPrinter(1) 
97.
     		wscript.echo splPrinter(1) 
98.
 
99.
     		wscript.echo "######END " & splPrinter(1) & "#####" 
100.
     Else 
101.
     End If 
102.
   Next 
103.
  End If 
104.
  Next 
105.
Next 
106.
Y = 0 
107.
wscript.echo "##################################################" 
108.
wscript.echo "" 
109.
wscript.echo "" 
110.
wscript.echo "##################################################" 
111.
 
112.
If DefPrinter =  "FALSE" Then 
113.
	wscript.echo "No Default Printer in Remapped Printers" 
114.
Else 
115.
	wscript.echo "Check for Connection: " & DefPrinter & " " 
116.
	For counter = 0 to 2 
117.
		Set colInstalledPrinters =  objWMIService.ExecQuery _ 
118.
    ("Select * from Win32_Printer") 
119.
	 For Each objPrinter in colInstalledPrinters 
120.
	 'wscript.echo UCase(objPrinter.Name)& " -> " & UCase(DefPrinter) 
121.
		If InStr(1,UCase(objPrinter.Name),UCase(DefPrinter),1) > 0 Then 
122.
			wscript.echo "-Bingo!" 
123.
			counter = 3 
124.
			Exit For 
125.
		Else 
126.
		  counter = 1 
127.
		End If 
128.
	 Next 
129.
	Next 
130.
	     		'IF PRINTER IS DEFAULT (True) SET NEW DEFAULT 
131.
			     		If DefPrinter = "FALSE" Then 
132.
			     	  Else 
133.
								wscript.echo "-Set as Default" 
134.
			     			'objNetwork.SetDefaultPrinter splPrinter(1) 
135.
			     			'wscript.echo splPrinter(1) 
136.
			     			objNetwork.SetDefaultPrinter DefPrinter 
137.
			     			wscript.echo DefPrinter 
138.
			     		End If 
139.
End If 
140.
wscript.echo "##################################################" 
141.
wscript.echo "" 
142.
wscript.echo "#######################" 
143.
wscript.echo "###### END OF ALL " & "#####" 
144.
wscript.echo "#######################" 
145.
WScript.sleep 20000
Happy Testing (aber nicht gleich mit allen ) ....

Karo
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft
12 Windows Clients zentral administrieren (10)

Frage von kaufmann zum Thema Microsoft ...

Windows Update
WSUS zeigt max. 69 Clients an (2)

Frage von TheGoodOne zum Thema Windows Update ...

Backup
Clients als Server missbrauchen? (21)

Frage von 1410640014 zum Thema Backup ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...