Mit Kix Drucker auf Client auslesen und wenn auf falschem Server, auf neuen verbinden
Hallo Leute,
ich möchte gerne mein Kix Loginscript so anpassen, dass automatisch Drucker von einem alten Server auf einen neuen verbunden werden.
Das Script soll also abfragen: Ist ein Drucker von Server1 verbunden, wenn ja, verbinde ihn von Server2 und lösche auf dem Client die Verbindung zu Server1.
Hat jemand eine Idee wie ich so etwas bewerkstelligen kann?
Gruß
ich möchte gerne mein Kix Loginscript so anpassen, dass automatisch Drucker von einem alten Server auf einen neuen verbunden werden.
Das Script soll also abfragen: Ist ein Drucker von Server1 verbunden, wenn ja, verbinde ihn von Server2 und lösche auf dem Client die Verbindung zu Server1.
Hat jemand eine Idee wie ich so etwas bewerkstelligen kann?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 29798
Url: https://administrator.de/contentid/29798
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
8 Kommentare
Neuester Kommentar
G' Abend,
dann probier's ich einfach mal:
Es müsste eigentlich gehen..Viel Spaß. Falls du Fragen hast, einfach melden..
Gruß
Dani
dann probier's ich einfach mal:
;Console Verstecken
$tmp = SetConsole("SHOW");
;Variablen
$server = "SERVER"
$drucker = "DRUCKERFREIGABENAME"
;Löscht den alten Drucker
If DelPrinterConnection ("\\SERVER\ALTERDRUCKER") = 0
"Deleted printer connection...."
;Erstellt neuen Drucker und setzt ihn als Standard
If ADDPRINTERCONNECTION ("\\" + $server + "\" + $drucker) = 0
"Added printer connection...."
If SetDefaultPrinter ("\\" + $server + "\" + $drucker) = 0
"Set default printer...."
EndIf
Endif
Endif
;Wartet 10 Sekunden
Sleep 10
Es müsste eigentlich gehen..Viel Spaß. Falls du Fragen hast, einfach melden..
Gruß
Dani
Hi,
ich hatte das gleiche Problem auch mal und hab dazu für ein paar Tage einige Zeilen ins Login-Script gehängt:
Es werden alle verbundenen Drucker ausgelesen, gelöscht und auf dem neuen Server wieder verbunden. Auch der Standard-Drucker wird wieder eingestellt. Einzige die Druckernamen müssen halt auf beiden Servern identisch sein.
Teilweise sind im Script noch ein paar Textausgaben übrig geblieben, welche ich zum Testen eingebaut hatte und es lässt sich sicher auch noch optimieren .
Gruß,
Thomas
ich hatte das gleiche Problem auch mal und hab dazu für ein paar Tage einige Zeilen ins Login-Script gehängt:
;=========================================
; Kix-Script - Change PrintServer.Kix
;=========================================
Break on
$prtsrvold="\\Server1"
$prtsrvnew="\\Server8"
$Index = 0
$TempPrinter = ""
;----------------------------------------------------
;Erstellt eine Liste mit allen installierten Druckern
;----------------------------------------------------
Dim $PrinterArray[40]
:Loop
If @ERROR=0
$TempPrinter = $TempPrinter + EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts",$Index) + ","
$Index = $Index + 1
GoTo "Loop"
EndIf
$TempPrinter = Trim($TempPrinter)
$Length = Len("$TempPrinter") - 2
$TempPrinter = Left("$TempPrinter","$Length")
$PrinterArray = Split("$TempPrinter",",")
;------------------------------
;Ermittelt den Standard Drucker
;------------------------------
$DefaultPrinter = ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device")
If $DefaultPrinter <> ""
$End = InStr("$DefaultPrinter",",") - 1
$DefaultPrinter = Left("$DefaultPrinter","$End")
Else
$DefaultPrinter = "none"
EndIf
;---------------------
;Gibt Status-Infos aus
;---------------------
;? "Standard-Drucker: " + $DefaultPrinter
;? ? "Liste aller Drucker:" ? ?
;--------------------------------------------------------------------------------------
;trennt alle Netzwerkdrucker vom alten Server und verbindet sie wieder vom neuen Server
;--------------------------------------------------------------------------------------
For $Count = 0 to $Index-2
If Left($PrinterArray[$Count],Len($prtsrvold))=$prtsrvold ; nur Netzwerk-Drucker auf dem bisherigen Print-Server
;? $PrinterArray[$Count]
$rc=DelPrinterConnection ($PrinterArray[$Count])
? $PrinterArray[$Count]" gelöscht"
$newprt=$prtsrvnew+SubStr ($PrinterArray[$Count],Len($prtsrvold)+1,200)
$rc=AddPrinterConnection ($newprt)
? $newprt" neu verbunden"
EndIf
Next
;---------------------------------------
;Stellt den "alten" Standard-Drucker ein
;---------------------------------------
If $DefaultPrinter <> "none"
If Left($DefaultPrinter,Len($prtsrvold))=$prtsrvold ; Standard-Drucker ist ein Netzwerk-Drucker
$newprt=$prtsrvnew+SubStr ($DefaultPrinter,Len($prtsrvold)+1,200) ;
$rc=SetDefaultPrinter ($newprt) ; "neuer" Standard-Drucker gesetzt
? ? "neuer Standard-Drucker "$newprt" eingestellt"
EndIf
EndIf
Es werden alle verbundenen Drucker ausgelesen, gelöscht und auf dem neuen Server wieder verbunden. Auch der Standard-Drucker wird wieder eingestellt. Einzige die Druckernamen müssen halt auf beiden Servern identisch sein.
Teilweise sind im Script noch ein paar Textausgaben übrig geblieben, welche ich zum Testen eingebaut hatte und es lässt sich sicher auch noch optimieren .
Gruß,
Thomas
Hi,
ich hatte das gleiche Problem auch mal und
hab dazu für ein paar Tage einige
Zeilen ins Login-Script gehängt:
Es werden alle verbundenen Drucker
ausgelesen, gelöscht und auf dem neuen
Server wieder verbunden. Auch der
Standard-Drucker wird wieder eingestellt.
Einzige die Druckernamen müssen halt
auf beiden Servern identisch sein.
Teilweise sind im Script noch ein paar
Textausgaben übrig geblieben, welche
ich zum Testen eingebaut hatte und es
lässt sich sicher auch noch optimieren
.
Gruß,
Thomas
ich hatte das gleiche Problem auch mal und
hab dazu für ein paar Tage einige
Zeilen ins Login-Script gehängt:
;=========================================
> ; Kix-Script - Change PrintServer.Kix
> ;=========================================
>
> Break on
>
> $prtsrvold="\\Server1"
> $prtsrvnew="\\Server8"
> $Index = 0
> $TempPrinter = ""
>
> ;----------------------------------------------------
> ;Erstellt eine Liste mit allen installierten
> Druckern
> ;----------------------------------------------------
>
> Dim $PrinterArray[40]
> :Loop
> If @ERROR=0
> $TempPrinter = $TempPrinter +
> EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows
> NT\CurrentVersion\PrinterPorts",$Index)
> + ","
> $Index = $Index + 1
> GoTo "Loop"
> EndIf
>
> $TempPrinter = Trim($TempPrinter)
> $Length = Len("$TempPrinter") - 2
> $TempPrinter =
> Left("$TempPrinter","$Length")
> $PrinterArray =
> Split("$TempPrinter",",")
>
> ;------------------------------
> ;Ermittelt den Standard Drucker
> ;------------------------------
>
> $DefaultPrinter =
> ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows
> NT\CurrentVersion\Windows","Device")
> If $DefaultPrinter <> ""
> $End =
> InStr("$DefaultPrinter",",")
> - 1
> $DefaultPrinter =
> Left("$DefaultPrinter","$End")
> Else
> $DefaultPrinter = "none"
> EndIf
>
> ;---------------------
> ;Gibt Status-Infos aus
> ;---------------------
>
> ;? "Standard-Drucker: " +
> $DefaultPrinter
> ;? ? "Liste aller Drucker:" ? ?
>
> ;--------------------------------------------------------------------------------------
> ;trennt alle Netzwerkdrucker vom alten
> Server und verbindet sie wieder vom neuen
> Server
> ;--------------------------------------------------------------------------------------
>
> For $Count = 0 to $Index-2
> If
> Left($PrinterArray[$Count],Len($prtsrvold))=$prtsrvold ;
> nur Netzwerk-Drucker auf dem bisherigen
> Print-Server
> ;? $PrinterArray[$Count]
> ;$rc=DelPrinterConnection
> ($PrinterArray[$Count])
> ? $PrinterArray[$Count]"
> gelöscht"
> $newprt=$prtsrvnew+SubStr
> ($PrinterArray[$Count],Len($prtsrvold)+1,200)
> ;$rc=AddPrinterConnection ($newprt)
> ? $newprt" neu verbunden"
> EndIf
> Next
>
> ;---------------------------------------
> ;Stellt den "alten"
> Standard-Drucker ein
> ;---------------------------------------
>
> If $DefaultPrinter <>
> "none"
> If
> Left($DefaultPrinter,Len($prtsrvold))=$prtsrvold
> ; Standard-Drucker ist ein Netzwerk-Drucker
> $newprt=$prtsrvnew+SubStr
> ($DefaultPrinter,Len($prtsrvold)+1,200) ;
> ;$rc=SetDefaultPrinter ($newprt) ;
> "neuer" Standard-Drucker gesetzt
> ? ? "neuer Standard-Drucker
> "$newprt" eingestellt"
> EndIf
> EndIf
>
Es werden alle verbundenen Drucker
ausgelesen, gelöscht und auf dem neuen
Server wieder verbunden. Auch der
Standard-Drucker wird wieder eingestellt.
Einzige die Druckernamen müssen halt
auf beiden Servern identisch sein.
Teilweise sind im Script noch ein paar
Textausgaben übrig geblieben, welche
ich zum Testen eingebaut hatte und es
lässt sich sicher auch noch optimieren
.
Gruß,
Thomas
Hallo Thomas,
ich habe da nochmal ne Frage.
Ich möchte gerne alle Drucker die Installiert sind auslesen und in eine Log-Datei schreiben lassen.
Soweit mit dem Drucker lesen und schreiben der Log-Datei erfolgt, bloß er löscht mir immer meine Netzdrucker.
Hier mal das Code:
break on
$Index = 0
$TempPrinter = ""
;Erstellt eine Liste mit allen installierten Druckern
Dim $PrinterArray[40]
:Loop
If @16034=0
$TempPrinter = $TempPrinter + EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts",$index) + ","
$Index = $Index + 1
GoTo "Loop"
EndIf
$TempPrinter = Trim($TempPrinter)
$Length = Len("$TempPrinter") - 2
$TempPrinter = Left("$TempPrinter","$Length")
$PrinterArray = Split("$TempPrinter",",")
;Schreiben der Log-Datei
$result=ReDirectOutput ("\\wst-w2k-file\kix-scripte$\Log-Dateien\"+@USERID+"_info.txt" ,1)
?"Stand "@DATE" - "@TIME
?"Letzter Login von: "@USERID
?"NetBIOS Name: "@WKSTA
?;
?;
?;
?"Drucker: "
?;
For $Count = 0 to $Index-2
? $PrinterArray[$Count]
Next
;;*
Und als info mal, wozu ist denn die variable $index?
Danke für deine Hilfe
MfG
Hi,
also bei mir tut Dein Script was es soll ... es wird folgender Text erzeugt:
Stand 2006/06/18 - 22:11:02
Letzter Login von: Thomas
NetBIOS Name: Client2
Drucker:
\\WinServer1\HP Color LaserJet 2500 PCL 6
\\WinServer1\HP LaserJet 2500 (SW)
\\WinServer1\PDF Writer
Und für was die Variable $index da ist ...
Mittels EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts",$Index) frage ich die Liste der Drucker unter dem entsprechenden Registry-Key ab. Dabei bestimmt der Wert von $index welcher Eintrag aus der Liste ausgelesen wird.
Beim Ausgeben der Liste dann wird $index wieder verwendet, um auf die einzelnen Positionen im Array zuzugreifen. Der Wert von $index ist in dem Fall aber 2 zu hoch, daher $index-2.
Gruß,
Thomas
also bei mir tut Dein Script was es soll ... es wird folgender Text erzeugt:
Stand 2006/06/18 - 22:11:02
Letzter Login von: Thomas
NetBIOS Name: Client2
Drucker:
\\WinServer1\HP Color LaserJet 2500 PCL 6
\\WinServer1\HP LaserJet 2500 (SW)
\\WinServer1\PDF Writer
Und für was die Variable $index da ist ...
Mittels EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts",$Index) frage ich die Liste der Drucker unter dem entsprechenden Registry-Key ab. Dabei bestimmt der Wert von $index welcher Eintrag aus der Liste ausgelesen wird.
Beim Ausgeben der Liste dann wird $index wieder verwendet, um auf die einzelnen Positionen im Array zuzugreifen. Der Wert von $index ist in dem Fall aber 2 zu hoch, daher $index-2.
Gruß,
Thomas
Hi,
ich hatte das gleiche Problem auch mal und
hab dazu für ein paar Tage einige
Zeilen ins Login-Script gehängt:
Es werden alle verbundenen Drucker
ausgelesen, gelöscht und auf dem neuen
Server wieder verbunden. Auch der
Standard-Drucker wird wieder eingestellt.
Einzige die Druckernamen müssen halt
auf beiden Servern identisch sein.
Teilweise sind im Script noch ein paar
Textausgaben übrig geblieben, welche
ich zum Testen eingebaut hatte und es
lässt sich sicher auch noch optimieren
.
Gruß,
Thomas
ich hatte das gleiche Problem auch mal und
hab dazu für ein paar Tage einige
Zeilen ins Login-Script gehängt:
;=========================================
> ; Kix-Script - Change PrintServer.Kix
> ;=========================================
>
> Break on
>
> $prtsrvold="\\Server1"
> $prtsrvnew="\\Server8"
> $Index = 0
> $TempPrinter = ""
>
> ;----------------------------------------------------
> ;Erstellt eine Liste mit allen installierten
> Druckern
> ;----------------------------------------------------
>
> Dim $PrinterArray[40]
> :Loop
> If @ERROR=0
> $TempPrinter = $TempPrinter +
> EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows
> NT\CurrentVersion\PrinterPorts",$Index)
> + ","
> $Index = $Index + 1
> GoTo "Loop"
> EndIf
>
> $TempPrinter = Trim($TempPrinter)
> $Length = Len("$TempPrinter") - 2
> $TempPrinter =
> Left("$TempPrinter","$Length")
> $PrinterArray =
> Split("$TempPrinter",",")
>
> ;------------------------------
> ;Ermittelt den Standard Drucker
> ;------------------------------
>
> $DefaultPrinter =
> ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows
> NT\CurrentVersion\Windows","Device")
> If $DefaultPrinter <> ""
> $End =
> InStr("$DefaultPrinter",",")
> - 1
> $DefaultPrinter =
> Left("$DefaultPrinter","$End")
> Else
> $DefaultPrinter = "none"
> EndIf
>
> ;---------------------
> ;Gibt Status-Infos aus
> ;---------------------
>
> ;? "Standard-Drucker: " +
> $DefaultPrinter
> ;? ? "Liste aller Drucker:" ? ?
>
> ;--------------------------------------------------------------------------------------
> ;trennt alle Netzwerkdrucker vom alten
> Server und verbindet sie wieder vom neuen
> Server
> ;--------------------------------------------------------------------------------------
>
> For $Count = 0 to $Index-2
> If
> Left($PrinterArray[$Count],Len($prtsrvold))=$prtsrvold ;
> nur Netzwerk-Drucker auf dem bisherigen
> Print-Server
> ;? $PrinterArray[$Count]
> ;$rc=DelPrinterConnection
> ($PrinterArray[$Count])
> ? $PrinterArray[$Count]"
> gelöscht"
> $newprt=$prtsrvnew+SubStr
> ($PrinterArray[$Count],Len($prtsrvold)+1,200)
> ;$rc=AddPrinterConnection ($newprt)
> ? $newprt" neu verbunden"
> EndIf
> Next
>
> ;---------------------------------------
> ;Stellt den "alten"
> Standard-Drucker ein
> ;---------------------------------------
>
> If $DefaultPrinter <>
> "none"
> If
> Left($DefaultPrinter,Len($prtsrvold))=$prtsrvold
> ; Standard-Drucker ist ein Netzwerk-Drucker
> $newprt=$prtsrvnew+SubStr
> ($DefaultPrinter,Len($prtsrvold)+1,200) ;
> ;$rc=SetDefaultPrinter ($newprt) ;
> "neuer" Standard-Drucker gesetzt
> ? ? "neuer Standard-Drucker
> "$newprt" eingestellt"
> EndIf
> EndIf
>
Es werden alle verbundenen Drucker
ausgelesen, gelöscht und auf dem neuen
Server wieder verbunden. Auch der
Standard-Drucker wird wieder eingestellt.
Einzige die Druckernamen müssen halt
auf beiden Servern identisch sein.
Teilweise sind im Script noch ein paar
Textausgaben übrig geblieben, welche
ich zum Testen eingebaut hatte und es
lässt sich sicher auch noch optimieren
.
Gruß,
Thomas
Hallo!
Habe das obige Skript bei uns auch mal getestet. Habe das Problem, dass das Skript zwar ausgibt, die Drucker geändert zu haben, es allerdings nicht tut. Kann das sein, dass es nur funktioniert, wenn die Drucker vorher auch mit einem Kix Skript und ADDPRINTERCONNECTION angelegt worden sind?
Danke für eure Hilfe.
Nadine
Hallo Nadine,
im Abschnitt "trennt alle Netzwerkdrucker..." musst Du noch den Strichpunkt vor den beiden Zeilen mit "DelPrinterConnection" und "AddPrinterConnection" rausmachen. Ebenfalls im Abschnitt "Stellt Standard-Drucker ein" bei "SetDefaultPrinter".
Ich habe es in meinem Beitrag schon geändert. Die Zeilen hatte ich wohl auskommentiert um den Script-Schnippsel nochmal zu testen.
Gruß,
Thomas
im Abschnitt "trennt alle Netzwerkdrucker..." musst Du noch den Strichpunkt vor den beiden Zeilen mit "DelPrinterConnection" und "AddPrinterConnection" rausmachen. Ebenfalls im Abschnitt "Stellt Standard-Drucker ein" bei "SetDefaultPrinter".
Ich habe es in meinem Beitrag schon geändert. Die Zeilen hatte ich wohl auskommentiert um den Script-Schnippsel nochmal zu testen.
Gruß,
Thomas