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
GELÖST

Mit Kix Drucker auf Client auslesen und wenn auf falschem Server, auf neuen verbinden

Frage Entwicklung KiXtart

Mitglied: Cheops

Cheops (Level 1) - Jetzt verbinden

05.04.2006, aktualisiert 24.07.2006, 13787 Aufrufe, 8 Kommentare

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ß
Mitglied: Dani
05.04.2006 um 20:22 Uhr
G' Abend,
dann probier's ich einfach mal:

01.
;Console Verstecken 
02.
$tmp = SetConsole("SHOW"); 
03.
 
04.
;Variablen 
05.
$server = "SERVER" 
06.
$drucker = "DRUCKERFREIGABENAME" 
07.
 
08.
;Löscht den alten Drucker 
09.
If DelPrinterConnection ("\\SERVER\ALTERDRUCKER") = 0 
10.
 "Deleted printer connection...." 
11.
 
12.
 ;Erstellt neuen Drucker und setzt ihn als Standard 
13.
 If ADDPRINTERCONNECTION ("\\" + $server + "\" + $drucker) = 0 
14.
  "Added printer connection...." 
15.
  If SetDefaultPrinter ("\\" + $server + "\" + $drucker) = 0 
16.
   "Set default printer...." 
17.
  EndIf 
18.
 Endif 
19.
Endif 
20.
 
21.
;Wartet 10 Sekunden 
22.
Sleep 10
Es müsste eigentlich gehen..Viel Spaß. Falls du Fragen hast, einfach melden..


Gruß
Dani
Bitte warten ..
Mitglied: superboh
06.04.2006 um 05:41 Uhr
Hi,

ich hatte das gleiche Problem auch mal und hab dazu für ein paar Tage einige Zeilen ins Login-Script gehängt:

01.
;========================================= 
02.
; Kix-Script   -   Change PrintServer.Kix 
03.
;========================================= 
04.
 
05.
Break on 
06.
 
07.
$prtsrvold="\\Server1" 
08.
$prtsrvnew="\\Server8" 
09.
$Index = 0 
10.
$TempPrinter = "" 
11.
 
12.
;---------------------------------------------------- 
13.
;Erstellt eine Liste mit allen installierten Druckern 
14.
;---------------------------------------------------- 
15.
 
16.
Dim $PrinterArray[40] 
17.
:Loop 
18.
 If @ERROR=0 
19.
  $TempPrinter = $TempPrinter + EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts",$Index) + "," 
20.
  $Index = $Index + 1 
21.
  GoTo "Loop" 
22.
 EndIf 
23.
 
24.
$TempPrinter = Trim($TempPrinter) 
25.
$Length = Len("$TempPrinter") - 2 
26.
$TempPrinter = Left("$TempPrinter","$Length") 
27.
$PrinterArray = Split("$TempPrinter",",") 
28.
 
29.
;------------------------------ 
30.
;Ermittelt den Standard Drucker 
31.
;------------------------------ 
32.
 
33.
$DefaultPrinter = ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device") 
34.
If $DefaultPrinter <> "" 
35.
 $End = InStr("$DefaultPrinter",",") - 1 
36.
 $DefaultPrinter = Left("$DefaultPrinter","$End") 
37.
Else  
38.
  $DefaultPrinter = "none" 
39.
EndIf  
40.
 
41.
;--------------------- 
42.
;Gibt Status-Infos aus 
43.
;--------------------- 
44.
 
45.
;? "Standard-Drucker: " + $DefaultPrinter 
46.
;? ? "Liste aller Drucker:" ? ? 
47.
 
48.
;-------------------------------------------------------------------------------------- 
49.
;trennt alle Netzwerkdrucker vom alten Server und verbindet sie wieder vom neuen Server 
50.
;-------------------------------------------------------------------------------------- 
51.
 
52.
For $Count = 0 to $Index-2 
53.
  If Left($PrinterArray[$Count],Len($prtsrvold))=$prtsrvold	; nur Netzwerk-Drucker auf dem bisherigen Print-Server 
54.
    ;? $PrinterArray[$Count] 
55.
    $rc=DelPrinterConnection ($PrinterArray[$Count]) 
56.
    ? $PrinterArray[$Count]" gelöscht" 
57.
    $newprt=$prtsrvnew+SubStr ($PrinterArray[$Count],Len($prtsrvold)+1,200) 
58.
    $rc=AddPrinterConnection ($newprt) 
59.
    ? $newprt" neu verbunden" 
60.
  EndIf     
61.
Next 
62.
 
63.
;--------------------------------------- 
64.
;Stellt den "alten" Standard-Drucker ein 
65.
;--------------------------------------- 
66.
 
67.
If $DefaultPrinter <> "none"						 
68.
  If Left($DefaultPrinter,Len($prtsrvold))=$prtsrvold ; Standard-Drucker ist ein Netzwerk-Drucker 
69.
    $newprt=$prtsrvnew+SubStr ($DefaultPrinter,Len($prtsrvold)+1,200) ;  
70.
    $rc=SetDefaultPrinter ($newprt) ; "neuer" Standard-Drucker gesetzt 
71.
    ? ? "neuer Standard-Drucker "$newprt" eingestellt" 
72.
  EndIf 
73.
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
Bitte warten ..
Mitglied: Cheops
06.04.2006 um 10:37 Uhr
Vielen Dank @Dani und @superboh,

ihr habt mir sehr weiter geholfen. War genau das was ich gebraucht habe.

Vielen Dank

Grüße
Bitte warten ..
Mitglied: SMHAMK1985
15.06.2006 um 15:36 Uhr
Hi,

ich hatte das gleiche Problem auch mal und
hab dazu für ein paar Tage einige
Zeilen ins Login-Script gehängt:

01.
;========================================= 
02.
> ; Kix-Script   -   Change PrintServer.Kix 
03.
> ;========================================= 
04.
>  
05.
> Break on 
06.
>  
07.
> $prtsrvold="\\Server1" 
08.
> $prtsrvnew="\\Server8" 
09.
> $Index = 0 
10.
> $TempPrinter = "" 
11.
>  
12.
> ;---------------------------------------------------- 
13.
> ;Erstellt eine Liste mit allen installierten 
14.
> Druckern 
15.
> ;---------------------------------------------------- 
16.
>  
17.
> Dim $PrinterArray[40] 
18.
> :Loop 
19.
>  If @ERROR=0 
20.
>   $TempPrinter = $TempPrinter + 
21.
> EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows 
22.
> NT\CurrentVersion\PrinterPorts",$Index) 
23.
> + "," 
24.
>   $Index = $Index + 1 
25.
>   GoTo "Loop" 
26.
>  EndIf 
27.
>  
28.
> $TempPrinter = Trim($TempPrinter) 
29.
> $Length = Len("$TempPrinter") - 2 
30.
> $TempPrinter = 
31.
> Left("$TempPrinter","$Length") 
32.
> $PrinterArray = 
33.
> Split("$TempPrinter",",") 
34.
>  
35.
> ;------------------------------ 
36.
> ;Ermittelt den Standard Drucker 
37.
> ;------------------------------ 
38.
>  
39.
> $DefaultPrinter = 
40.
> ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows 
41.
> NT\CurrentVersion\Windows","Device") 
42.
> If $DefaultPrinter <> "" 
43.
>  $End = 
44.
> InStr("$DefaultPrinter",",") 
45.
> - 1 
46.
>  $DefaultPrinter = 
47.
> Left("$DefaultPrinter","$End") 
48.
> Else  
49.
>   $DefaultPrinter = "none" 
50.
> EndIf  
51.
>  
52.
> ;--------------------- 
53.
> ;Gibt Status-Infos aus 
54.
> ;--------------------- 
55.
>  
56.
> ;? "Standard-Drucker: " + 
57.
> $DefaultPrinter 
58.
> ;? ? "Liste aller Drucker:" ? ? 
59.
>  
60.
> ;-------------------------------------------------------------------------------------- 
61.
> ;trennt alle Netzwerkdrucker vom alten 
62.
> Server und verbindet sie wieder vom neuen 
63.
> Server 
64.
> ;-------------------------------------------------------------------------------------- 
65.
>  
66.
> For $Count = 0 to $Index-2 
67.
>   If 
68.
> Left($PrinterArray[$Count],Len($prtsrvold))=$prtsrvold	; 
69.
> nur Netzwerk-Drucker auf dem bisherigen 
70.
> Print-Server 
71.
>     ;? $PrinterArray[$Count] 
72.
>     ;$rc=DelPrinterConnection 
73.
> ($PrinterArray[$Count]) 
74.
>     ? $PrinterArray[$Count]" 
75.
> gelöscht" 
76.
>     $newprt=$prtsrvnew+SubStr 
77.
> ($PrinterArray[$Count],Len($prtsrvold)+1,200) 
78.
>     ;$rc=AddPrinterConnection ($newprt) 
79.
>     ? $newprt" neu verbunden" 
80.
>   EndIf     
81.
> Next 
82.
>  
83.
> ;--------------------------------------- 
84.
> ;Stellt den "alten" 
85.
> Standard-Drucker ein 
86.
> ;--------------------------------------- 
87.
>  
88.
> If $DefaultPrinter <> 
89.
> "none"						 
90.
>   If 
91.
> Left($DefaultPrinter,Len($prtsrvold))=$prtsrvold 
92.
> ; Standard-Drucker ist ein Netzwerk-Drucker 
93.
>     $newprt=$prtsrvnew+SubStr 
94.
> ($DefaultPrinter,Len($prtsrvold)+1,200) ;  
95.
>     ;$rc=SetDefaultPrinter ($newprt) ; 
96.
> "neuer" Standard-Drucker gesetzt 
97.
>     ? ? "neuer Standard-Drucker 
98.
> "$newprt" eingestellt" 
99.
>   EndIf 
100.
> EndIf 
101.
> 
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

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: superboh
18.06.2006 um 22:22 Uhr
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
Bitte warten ..
Mitglied: SMHAMK1985
18.06.2006 um 22:31 Uhr
Hallo,

erstmal Danke für deine Hilfe

Das Problem mit dem gelöschten Drucker hat doch nichts damit zutun. Nach 4-5 stunden suche habe ich festgestellt, dass ein anderer script im hintergrund lief

Und nochmal Danke für die erklärung der variable INDEX ;)

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Nadinchen
24.07.2006 um 13:56 Uhr
Hi,

ich hatte das gleiche Problem auch mal und
hab dazu für ein paar Tage einige
Zeilen ins Login-Script gehängt:

01.
;========================================= 
02.
> ; Kix-Script   -   Change PrintServer.Kix 
03.
> ;========================================= 
04.
>  
05.
> Break on 
06.
>  
07.
> $prtsrvold="\\Server1" 
08.
> $prtsrvnew="\\Server8" 
09.
> $Index = 0 
10.
> $TempPrinter = "" 
11.
>  
12.
> ;---------------------------------------------------- 
13.
> ;Erstellt eine Liste mit allen installierten 
14.
> Druckern 
15.
> ;---------------------------------------------------- 
16.
>  
17.
> Dim $PrinterArray[40] 
18.
> :Loop 
19.
>  If @ERROR=0 
20.
>   $TempPrinter = $TempPrinter + 
21.
> EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows 
22.
> NT\CurrentVersion\PrinterPorts",$Index) 
23.
> + "," 
24.
>   $Index = $Index + 1 
25.
>   GoTo "Loop" 
26.
>  EndIf 
27.
>  
28.
> $TempPrinter = Trim($TempPrinter) 
29.
> $Length = Len("$TempPrinter") - 2 
30.
> $TempPrinter = 
31.
> Left("$TempPrinter","$Length") 
32.
> $PrinterArray = 
33.
> Split("$TempPrinter",",") 
34.
>  
35.
> ;------------------------------ 
36.
> ;Ermittelt den Standard Drucker 
37.
> ;------------------------------ 
38.
>  
39.
> $DefaultPrinter = 
40.
> ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows 
41.
> NT\CurrentVersion\Windows","Device") 
42.
> If $DefaultPrinter <> "" 
43.
>  $End = 
44.
> InStr("$DefaultPrinter",",") 
45.
> - 1 
46.
>  $DefaultPrinter = 
47.
> Left("$DefaultPrinter","$End") 
48.
> Else  
49.
>   $DefaultPrinter = "none" 
50.
> EndIf  
51.
>  
52.
> ;--------------------- 
53.
> ;Gibt Status-Infos aus 
54.
> ;--------------------- 
55.
>  
56.
> ;? "Standard-Drucker: " + 
57.
> $DefaultPrinter 
58.
> ;? ? "Liste aller Drucker:" ? ? 
59.
>  
60.
> ;-------------------------------------------------------------------------------------- 
61.
> ;trennt alle Netzwerkdrucker vom alten 
62.
> Server und verbindet sie wieder vom neuen 
63.
> Server 
64.
> ;-------------------------------------------------------------------------------------- 
65.
>  
66.
> For $Count = 0 to $Index-2 
67.
>   If 
68.
> Left($PrinterArray[$Count],Len($prtsrvold))=$prtsrvold	; 
69.
> nur Netzwerk-Drucker auf dem bisherigen 
70.
> Print-Server 
71.
>     ;? $PrinterArray[$Count] 
72.
>     ;$rc=DelPrinterConnection 
73.
> ($PrinterArray[$Count]) 
74.
>     ? $PrinterArray[$Count]" 
75.
> gelöscht" 
76.
>     $newprt=$prtsrvnew+SubStr 
77.
> ($PrinterArray[$Count],Len($prtsrvold)+1,200) 
78.
>     ;$rc=AddPrinterConnection ($newprt) 
79.
>     ? $newprt" neu verbunden" 
80.
>   EndIf     
81.
> Next 
82.
>  
83.
> ;--------------------------------------- 
84.
> ;Stellt den "alten" 
85.
> Standard-Drucker ein 
86.
> ;--------------------------------------- 
87.
>  
88.
> If $DefaultPrinter <> 
89.
> "none"						 
90.
>   If 
91.
> Left($DefaultPrinter,Len($prtsrvold))=$prtsrvold 
92.
> ; Standard-Drucker ist ein Netzwerk-Drucker 
93.
>     $newprt=$prtsrvnew+SubStr 
94.
> ($DefaultPrinter,Len($prtsrvold)+1,200) ;  
95.
>     ;$rc=SetDefaultPrinter ($newprt) ; 
96.
> "neuer" Standard-Drucker gesetzt 
97.
>     ? ? "neuer Standard-Drucker 
98.
> "$newprt" eingestellt" 
99.
>   EndIf 
100.
> EndIf 
101.
> 
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
Bitte warten ..
Mitglied: superboh
24.07.2006 um 17:54 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Server
gelöst Client bei Windows Server 2003 ändern (5)

Frage von Therealcookie zum Thema Server ...

Windows Server
gelöst Freigegebene Drucker plötzlich offline (Windows Server 2008 AD) (3)

Frage von D1Ck3n zum Thema Windows Server ...

Hyper-V
Client: Win10 Hyper-V verbinden zu Server: Win 2012 R2 (3)

Frage von Hajo2006 zum Thema Hyper-V ...

Windows Netzwerk
Windows Server 2003 SBS Netzwerk durch neuen Server Ersetzen (9)

Frage von MultiStorm zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...