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, 13907 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

MfG
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 ;)

MfG
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 ..
Ähnliche Inhalte
Windows Server
gelöst exe aus Netzwerk über Client ausführen (Windows Server 2012 R2) (6)

Frage von peterpa zum Thema Windows Server ...

Windows Server
gelöst Site to Site VPN (Kein Zugriff von Client auf Remote Server) (3)

Frage von subsee zum Thema Windows Server ...

Router & Routing
Synology Server als VPN Client und VPN Server Gleichzeitig nutzen (3)

Frage von authrey zum Thema Router & Routing ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
NTFS und die Defragmentierung (26)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (18)

Frage von hannsgmaulwurf zum Thema LAN, WAN, Wireless ...

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...