Jump to content

Drucker per Anmeldescript mappen dauert. Warum?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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?

Link zu diesem Kommentar

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

Link zu diesem Kommentar
  • 2 Wochen später...

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 /?

Link zu diesem Kommentar
  • 5 Monate später...

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar
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

Link zu diesem Kommentar
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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...