mfinkler
Goto Top

Druckerproblem unter TS (Citrix)

Guten Morgen,

ich will nicht lang drum rum reden, folgendes Problem:

wir haben hier 2 Printserver, die mit Thinprint laufen (für die, die es nicht kennen, es verbindet sich mit einem Client und man kann den Drucker direkt ansteuern), wo alle Drucker lokal angelegt sind und für die Bediener freigegeben sind.

Das klappt auch soweit ganz wunderbar, nur hab ich das Problem, dass hin und wieder die Drucker bei einigen Bedienern nicht mehr erscheinen. Gut, das kann passieren, nichts tragisches, aber manchmal ist auch der Standarddrucker weg und es lässt sich von Hand keiner mehr definieren.

Gibt es evtl unter Windows 2003 eine Beschränkung der max. zugelassenen Druckerverbindungen?
Ich bins leid jeden und jeden Tag ca 20 Drucker wieder zu verbinden. Ich führe erneut das AutoIT Script aus, und alles ist gut. Es sind auch immer andere Bediener, sodass man nicht sagen kann, Bedienerfehler o.ä.

Ich poste mal mein Druckerscript, evtl fällt jemandem was dazu ein.

Gruß


Autoitscript:

autoitsetoption ("trayiconhide", 1)

ifmemberabfrage()
$con2prt = @scriptdir & "\con2prt.exe"
$con2prtc = $con2prt & " /c"
$con2prts = $con2prtc & "d"

;--- alle Drucker löschen
runwait($con2prt & " /f","",@SW_HIDE)

;--- Netzwerkdrucker verbinden
; tpverbinden("Druckername") = auf dem Thinprintservern 1 und 2 wird der Drucker verbunden
; tpsverbinden("Druckername") = auf dem Thinprintservern 1 und 2 wird der Drucker verbunden und als Standard definieren
; verbinden("\\server\drucker") = auf dem angegeben Server wird Drucker verbunden + standard


if inGruppe("120-P-001") then verbinden("\\20.222.226.135\hp9000")
if inGruppe("Drucker-125-P-001") then tpverbinden("125-P-001")
if inGruppe("142-P-001") then tpverbinden("142-P-001")
if inGruppe("144-P-001") then verbinden("\\20.222.22.140\bokyofs1020")
if inGruppe("151-P-001") then tpverbinden("151-P-001")
if inGruppe("253-P-001") then tpverbinden("253-P-001")
if inGruppe("461-P-001") then tpverbinden("461-P-001")
if inGruppe("Drucker-Farblaser-Vorstand") then tpverbinden("101-P-001")

if inGruppe("Drucker-Beratung-BLK") then
tpverbinden("Beratung-BLK-2")
tpverbinden("Beratung-BLK-3")
tpverbinden("Beratung-BLK-4")
tpverbinden("Beratung-BLK-5")
endif
if inGruppe("Drucker-Farblaser-BLK") then tpverbinden("Farblaser-BLK")

if inGruppe("Drucker-Beratung-IGB") then
tpverbinden("Beratung-IGB-1")
tpverbinden("Beratung-IGB-2")
tpverbinden("Beratung-IGB-3")
tpverbinden("Beratung-IGB-4")
tpverbinden("Beratung-IGB-5")
tpverbinden("Beratung-IGB-6")
endif
if inGruppe("Drucker-Farblaser-IGB") then tpverbinden("Farblaser-IGB")

if inGruppe("Drucker-SVM-Hom") then
tpverbinden("SVM-Hom-1")
tpverbinden("SVM-Hom-2")
endif
if inGruppe("Drucker-Farblaser-HOM-1") then tpverbinden("Farblaser-HOM-1")

if inGruppe("Drucker-Beratung-GKC") then
tpverbinden("Beratung-GKC-1")
tpverbinden("Beratung-GKC-2")
tpverbinden("Beratung-GKC-3")
endif

if inGruppe("Drucker-IGS-P-001") then tpsverbinden("IGS-P-001")


;--- lokal angeschlossene Drucker mitverbinden

runwait("cmd /c n:\drucker\verbinden.vbs","",@SW_HIDE)

exit


;---------------------------- Funktionen -----------------------


;----------------------------- Suche Ifmember
func ifmemberabfrage()
If FileExists("n:\\maint\\ifmember.exe") then EnvSet ("ifmember", "n:\\maint\\ifmember.exe")
If FileExists("c:\\maint\\ifmember.exe") then EnvSet ("ifmember", "c:\\maint\\ifmember.exe")
If FileExists("d:\\maint\\ifmember.exe") then EnvSet ("ifmember", "d:\\maint\\ifmember.exe")
If FileExists("e:\\maint\\ifmember.exe") then EnvSet ("ifmember", "e:\\maint\\ifmember.exe")
EndFunc

func gruppe ($gruppe)
$run= EnvGet ("ifmember") & " " & $gruppe
EnvSet("grp"& $gruppe, $mitglied)
EndFunc


Func inGruppe ($gruppe)
gruppe($gruppe)
$drin = EnvGet("grp" & $gruppe)
if $drin = 1 then return 1
if $drin = 0 then return 0
EndFunc

Func tpverbinden ($drucker)
runwait($con2prtc & " \\thinprint01\"& $drucker,"",@SW_HIDE)
runwait($con2prtc & " \\thinprint02\"& $drucker,"",@SW_HIDE)
EndFunc

Func tpsverbinden ($drucker)
runwait($con2prts & " \\thinprint01\"& $drucker,"",@SW_HIDE)
runwait($con2prts & " \\thinprint02\"& $drucker,"",@SW_HIDE)
EndFunc


Func verbinden ($drucker)
runwait($con2prts & " " & $drucker,"",@SW_HIDE)
EndFunc


verbinden.vbs (wird innerhalb des AutoIT Scripts aufgerufen)
option explicit
on error resume next
dim objshell, objenv, objnet, objcitrix, objsession, user, client, printer1, printer2, server
Dim WshNetwork

set objshell = wscript.createobject("wscript.shell")
set objenv = objshell.environment("process")
set objnet = wscript.createobject("wscript.network")
set objcitrix = wscript.createobject("metaframecom.metaframefarm")
objcitrix.initialize(1)
user = objenv("username")
client = objenv("clientname")
for each objsession In objcitrix.sessions
if objsession.username = user then
client = objSession.clientname
end if
next

If WScript.Arguments.Count = 1 Then
client=(Wscript.Arguments(0))
End If

printer1="\\thinprint01\" + client
printer2="\\thinprint02\" + client

objnet.addwindowsprinterconnection printer1
objnet.addwindowsprinterconnection printer2
objshell.run("rundll32 printui.dll,PrintUIEntry /q /n" & printer1)
objshell.run("rundll32 printui.dll,PrintUIEntry /q /y /n" & printer2)

wscript.quit


Wir benutzen die Advanced Edition, allerdings greifen wir gar nicht auf die Druckerfunktion von Citrix zurück.

Zur Infrastruktur:
2 (Windows)Printserver wie erwähnt. Citrixclients: Linuxkisten. Auf denen läuft ein ThinPrintclient, der es erlaubt auf den Printservern die Drucker wie lokal anlegen zu können (und auch zu verwenden). Die Drucker werden wie der Clientname genannt und freigegeben, sodass das Script wie unten beschrieben nur die Drucker mappen muss, wie der Systemname ist.

Das AutoIT Script dient dazu, zusätzlich noch andere Netzwerkdrucker zu verbinden, anhand der Berechtigung im AD.

Nur ab und an verbinden die Drucker nicht, sind den ganzen Tag da, und plötzlich verschwunden oder die Drucker sind noch da, aber es ist kein Standarddrucker mehr definiert (und von Hand lässt sich keiner mehr definieren --> alle Netzwerdrucker trennen, neu verbinden)

Irgendwas ist da nicht so koscha.

Content-Key: 16280

Url: https://administrator.de/contentid/16280

Printed on: April 16, 2024 at 10:04 o'clock

Member: Chipstanzer
Chipstanzer Dec 30, 2005 at 09:53:18 (UTC)
Goto Top
Hallo
ich habe das gleiche Problem und such noch nach einer Ursache.
Wir setzen bei uns Script Logic 6.52 ein. Die Drucker werden auch in der Regel sauber verbunden allerdings fällt die Verbindung zum Drucker wärend der Sitzung aus. Ich muss dann jedesmal über die Funktion verbinden die Verding wieder herstellen.

Falls etwas über die Ursache bekannt ist wäre ich froh über eine kurze E-Mail an edv@stadt.sangerhausen.de oder eine Antwort hier im Forum.

Könnte das Problem eventuell mit anderen auf dem Prinserver installierten Druckertreibern zu tun haben die eventuell nicht Koscha sind ?

bye bye
Mitglied: 28585
28585 Apr 13, 2006 at 08:28:38 (UTC)
Goto Top
Hallo,
Drucker und Terminalserver waren bislang bei mir zwei Welten die nicht zusammen gehörten.
Hatte bislang 10 Ts in 4 Farmen unter Citrix Metaframe XPe im Einsatz und hatte das nicht zu behebende Problem ständiger Abstürze der Druckerwarteschlange, dies Problem verschärfte sich sogar noch mit einem Update von Citirx FR1 auf FR3.
Zwischenzeitlich habe ich 4 TS von Windows 2000 auf Windows 2003 Server upgedatet, es geht!!, vorher alle Druckertreiber, alle ICM-Profile und alle Einträge über Druckeranschlüsse gelöscht, nach dem Update nur noch zertifizierte Level 3 Druckertreiber installiert und Citrix PresentationServer4 eingespielt und Spoolsrv ist stabil.
viel freude!