Sandmanyz 10 Geschrieben 18. Juli 2010 Melden Teilen Geschrieben 18. Juli 2010 Hallo, wir mappen die Drucker an den Clients per Anmeldescript.... %logonserver%\netlogon\con2prt /c "\\Servername\Freigabename" Leider dauert dieser Vorgang ziemlich lange. Der Printserver ist ein W2K3. Mittlerweile haben wir auch schon einen W2K8 getestet...selbes Problem. Clients sind Windows 7 und Windows XP. Ich habe auch schon bei einigen ungeduldigen Usern eine Abfrage im Anmeldescript eingebaut. Da werden aus der Registry die gemappten Drucker ausgelesen und in eine Text Datei geschrieben. Entsprechend wird das Mappen der Drucker mit einer IF Abfrage umgangen (wenn Drucker vorhanden). Das is mir aber viel zu umständlich. Hat jemand eine Idee? Oder ist das normal und dauert bei euch auch so lange? Zitieren Link zu diesem Kommentar
r2k 10 Geschrieben 18. Juli 2010 Melden Teilen Geschrieben 18. Juli 2010 Hi du, ich hatte bei der initialen Verteilung von Druckern per GPO das selbe Problem: Es mussten die Treiber verteilt werden, darum gings relativ lange. Wenn ich dich richtig verstehe ist dies aber bei jedem Login, oder? Zitieren Link zu diesem Kommentar
Sandmanyz 10 Geschrieben 18. Juli 2010 Autor Melden Teilen Geschrieben 18. Juli 2010 Genau is bei jedem Login. Beim ersten Login kann ich das auch nachvollziehen. Aber halt nich immer. Zitieren Link zu diesem Kommentar
GuentherH 61 Geschrieben 18. Juli 2010 Melden Teilen Geschrieben 18. Juli 2010 Hi. Genau is bei jedem Login. Beim ersten Login kann ich das auch nachvollziehen. Aber halt nich immer. Wieso kannst du das nicht bei einem weiteren Login nachvollziehen?. Der Script wird ausgeführt und der Drucker wird erneut installiert und das bei jeder Ausführug des Scripts. Wenn, dann musst du einen Script (z.B. VBScript oder auch KIX) erstellen, der überprüft ob der Drucker installiert ist oder nicht. Hier ein Beispiel als Anregung: ' ' ========= Installiert Drucker, wenn nicht vorhanden ============ ' 'Array der Drucker, die installiert sein müssen ' Set objNetwork = CreateObject("WScript.Network") Set WshShell = WScript.CreateObject("WScript.Shell") Dim arrayPossPrinters(2) arrayPossPrinters(0) = "\\server\printer1" arrayPossPrinters(1) = "\\server\printer2" arrayPossPrinters(2) = "\\server\printer2" Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer Where Local = False") ' ==== Überprüfen der installierten Drucker ===== If colPrinters.Count <> 0 Then For Each objPossPrinter In arrayPossPrinters bFoundMatch = -1 'überprüfen, ob sich der abgefragte Drucker im Array befindet For Each objPrinterInstalled In colPrinters If UCase(objPrinterInstalled.ServerName & "\" & objPrinterInstalled.ShareName) = UCase(objPossPrinter)Then bFoundMatch = 1 'WScript.Echo "Drucker: " & objPossPrinter & vbCrLf & "installiert: " & bFoundMatch 'Schleife verlassen Exit For End If Next If bFoundMatch = -1 Then 'Drucker installieren, da nicht vorhanden 'wscript.echo bFoundMatch 'WScript.Echo objPossPrinter objNetwork.AddWindowsPrinterConnection objPossPrinter End If Next Else ' muss sein, wenn überhaupt kein Drucker installiert ist objNetwork.AddWindowsPrinterConnection "\\server\printer1" objNetwork.AddWindowsPrinterConnection "\\server\printer2" objNetwork.AddWindowsPrinterConnection "\\server\printer3" End If ' Default Drucker setzen objNetwork.SetDefaultPrinter "\\server\printer1" '========== End Code LG Günther Zitieren Link zu diesem Kommentar
Sandmanyz 10 Geschrieben 20. Juli 2010 Autor Melden Teilen Geschrieben 20. Juli 2010 Hallo Günther, vielen Dank für das Skript. Funktioniert dieses auch bei Windows 7 x32 & x64? MfG Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 29. Juli 2010 Melden Teilen Geschrieben 29. Juli 2010 Hallo, verwende den Uralten immer noch auch in Vista/7/2008 funktionierenden Befehl den du auch in einer stinknormalen Batch Datei verwenden kannst, der geht immer: rundll32 printui.dll,PrintUIEntry /in /n \\server\drucker /q /in = installieren bzw wenn schon da treiber updaten /n = Druckername /q = Schnauze halten Für Hilfe mache : rundll32 printui.dll,PrintUIEntry /? Zitieren Link zu diesem Kommentar
GuentherH 61 Geschrieben 29. Juli 2010 Melden Teilen Geschrieben 29. Juli 2010 @killtux Hier trifft aber auch genau das zu, was der TO nicht will. Nämlich das bei jeder Anmeldung der Druckertreiber neu installiert wird. LG Günther Zitieren Link zu diesem Kommentar
Dolli75 10 Geschrieben 5. Januar 2011 Melden Teilen Geschrieben 5. Januar 2011 Hallo zusammen, ich muss diesen alten Thread wieder auskramen. :( Sorry hierfür. Ich habe das Script von GuentherH benutzt und es funktioniert auch soweit bei allen NICHT Windows 7 bzw. Windows 2008 Systemen. Bei Windows 7 bzw. Windows 2008 Systemen bekomme ich aber die folgende Fehlermeldung wenn das Script, ich habe es in den Autostart Ordner für Testzwecke eingebaut, zum zweiten mal gestartet wird: Script: C:\Tools\NetLogOn\Test.vbs Line: 48 Char: 2 Error: The environment is incorrect Code: 8007000A Source: (null) Warum die Meldung kommt kann ich aber nicht sagen. Kann mir hierzu jemand helfen? Beste Grüße aus Darmstadt Dolli Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 6. Januar 2011 Melden Teilen Geschrieben 6. Januar 2011 Moin, welche Zeile ist denn in deinem Skript die Zeile 48? Im Originaltext ist das "End If", das kann den Fehler aber nicht verursachen. Gruß, Nils Zitieren Link zu diesem Kommentar
Dolli75 10 Geschrieben 6. Januar 2011 Melden Teilen Geschrieben 6. Januar 2011 Moin, welche Zeile ist denn in deinem Skript die Zeile 48? Im Originaltext ist das "End If", das kann den Fehler aber nicht verursachen. Gruß, Nils Servus Nils, danke erstmal für die schnelle Rückmeldung. Vielleicht sollte man das Script auch mit pasten?! ;-) Ich habe das von Guenther nur um den User erweitert. Hier kommt es: Die Zeile 48 ist also diese hier objNetwork.AddWindowsPrinterConnection "\\server\printer1" Danke für die Hilfe Grüße Chris ***************************************************** ' ' ========= Installiert Drucker, wenn nicht vorhanden ============ ' 'Array der Drucker, die installiert sein müssen ' benutzer = CStr(WScript.CreateObject("WScript.Network").UserName) if benutzer <> "bsasupport" then Set objNetwork = CreateObject("WScript.Network") Set WshShell = WScript.CreateObject("WScript.Shell") Dim arrayPossPrinters(1) arrayPossPrinters(0) = "\\server\printer1" arrayPossPrinters(1) = "\\server\printer2" Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer Where Local = False") ' ==== Überprüfen der installierten Drucker ===== If colPrinters.Count <> 0 Then For Each objPossPrinter In arrayPossPrinters bFoundMatch = -1 'überprüfen, ob sich der abgefragte Drucker im Array befindet For Each objPrinterInstalled In colPrinters If UCase(objPrinterInstalled.ServerName & "\" & objPrinterInstalled.ShareName) = UCase(objPossPrinter)Then bFoundMatch = 1 'WScript.Echo "Drucker: " & objPossPrinter & vbCrLf & "installiert: " & bFoundMatch 'Schleife verlassen Exit For End If Next If bFoundMatch = -1 Then 'Drucker installieren, da nicht vorhanden 'wscript.echo bFoundMatch 'WScript.Echo objPossPrinter objNetwork.AddWindowsPrinterConnection objPossPrinter End If Next Else ' muss sein, wenn überhaupt kein Drucker installiert ist objNetwork.AddWindowsPrinterConnection "\\server\printer1" objNetwork.AddWindowsPrinterConnection "\\server\printer2" End If END If Zitieren Link zu diesem Kommentar
GuentherH 61 Geschrieben 6. Januar 2011 Melden Teilen Geschrieben 6. Januar 2011 Hi. Zum Drucker unter W7 / W2008 hast du dir dies aber schon angesehen? - faq-o-matic.net Drucken unter Windows 7 in der Domne LG Günther Zitieren Link zu diesem Kommentar
Dolli75 10 Geschrieben 6. Januar 2011 Melden Teilen Geschrieben 6. Januar 2011 Hi. Zum Drucker unter W7 / W2008 hast du dir dies aber schon angesehen? - faq-o-matic.net Drucken unter Windows 7 in der Domne LG Günther Hallo Guenther, danke dass Du dich meldest. Meinst Du an dieser Stelle die GPMC oder GPEDIT? Ok. Ich habe jetzt ein bisschen rumgetestet und Messageboxen eingebaut um zu sehen was er überhaupt macht. Es scheint wohl ein Timing Problem zu sein. Ich denke er ist beim Autostart nach dem Logon wohl noch nicht soweit um die Drucker zu finden. Muss ich mir noch was einfallen lassen oder habt Ihr noch eine fixe Idee? Grüße Chris Zitieren Link zu diesem Kommentar
Dolli75 10 Geschrieben 6. Januar 2011 Melden Teilen Geschrieben 6. Januar 2011 Hallo Guenther, danke dass Du dich meldest. Meinst Du an dieser Stelle die GPMC oder GPEDIT? Ok. Ich habe jetzt ein bisschen rumgetestet und Messageboxen eingebaut um zu sehen was er überhaupt macht. Es scheint wohl ein Timing Problem zu sein. Ich denke er ist beim Autostart nach dem Logon wohl noch nicht soweit um die Drucker zu finden. Muss ich mir noch was einfallen lassen oder habt Ihr noch eine fixe Idee? Grüße Chris Hi zusammen, ich habs nun gefunden. Das Problem ist tatsächlich ein Timing Problem. Ich habe einfach einen "WScript.Sleep 10000" eingebaut und siehe da es funktioniert. Danke allen für die Hilfe. Hier nochmals das funktionierende Script falls es einer für Windows 7 oder Windows 2008 /2008 R2 braucht. Grüße Chris ************************************************** ' ' ========= Installiert Drucker, wenn nicht vorhanden ============ ' 'Array der Drucker, die installiert sein müssen ' benutzer = CStr(WScript.CreateObject("WScript.Network").UserName) if benutzer <> "bsasupport" then Set objNetwork = CreateObject("WScript.Network") Set WshShell = WScript.CreateObject("WScript.Shell") Dim arrayPossPrinters(1) arrayPossPrinters(0) = "\\server\printer1" arrayPossPrinters(1) = "\\server\printer2" ' Warte 10 Sekunden bis Windows soweit ist. ' Wichtig für alle Windows 7/ 2008 und 2008 R2 Systeme. WScript.Sleep 10000 Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer Where Local = False") ' ==== Überprüfen der installierten Drucker ===== If colPrinters.Count <> 0 Then For Each objPossPrinter In arrayPossPrinters bFoundMatch = -1 'überprüfen, ob sich der abgefragte Drucker im Array befindet For Each objPrinterInstalled In colPrinters If UCase(objPrinterInstalled.ServerName & "\" & objPrinterInstalled.ShareName) = UCase(objPossPrinter)Then bFoundMatch = 1 'WScript.Echo "Drucker: " & objPossPrinter & vbCrLf & "installiert: " & bFoundMatch 'Schleife verlassen Exit For End If Next If bFoundMatch = -1 Then 'Drucker installieren, da nicht vorhanden 'wscript.echo bFoundMatch 'WScript.Echo objPossPrinter objNetwork.AddWindowsPrinterConnection objPossPrinter End If Next Else ' muss sein, wenn überhaupt kein Drucker installiert ist objNetwork.AddWindowsPrinterConnection "\\server\printer1" objNetwork.AddWindowsPrinterConnection "\\server\printer2" End If END If Zitieren Link zu diesem Kommentar
GuentherH 61 Geschrieben 6. Januar 2011 Melden Teilen Geschrieben 6. Januar 2011 Danke für die Rückmeldung :) LG Günther Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 7. Januar 2011 Melden Teilen Geschrieben 7. Januar 2011 ich habs nun gefunden. Das Problem ist tatsächlich ein Timing Problem. Ich habe einfach einen "WScript.Sleep 10000" eingebaut und siehe da es funktioniert. Aktiviere die beiden Einstellungen aus der GPO-FAQ No. 36 für die Clients: FAQ-GPO Jetzt noch zweimal neu starten und Du brauchst vermutlich das Sleep nicht mehr. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.