muribln
Goto Top

Drucker auf mehrere Arbeitsplätze übernehmen

Hi,
Ok.. ich kann mir vorstellen, dass man dieses Problem mit Programmierkenntnissen einfacher lösen könnte. Mal schauen ob es in diesem Forum lösbar ist...

Problem: Der Benutzer soll beim wechseln des Arbeitplatz seine Drucker automatisch gemappt bekommen. Hierfür möchte ich eine Liste der Drucker in eine Datei im Homeverzeichnis des Benutzers kopieren.

Ein zentrales Profil gibt es leider nicht. Ich habe herausgefunden wo sich die gemappten Drucker und vor allem der Standarddrucker des Benutzers in der Registry befinden.
Ein Tool zum Mappen des Druckers habe ich"con2prt.exe /c \\Printserver\Druckerfreigabe", ich brauch ein brauchbares Export von der Registry:
Standarddrucker (Printername = Wert)
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device = \\Printserver\Druckerfreigabe,winspool,Ne00:
Also ohne dieses ",winspool?".

Restliche Drucker (Printername = Schlüsselname)
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts\\Printserver\Druckerfreigabe
Natürlich sollte der Export nur bei gemappten Druckern sein und nicht bei z.B. PDFMaker oder sowas. face-smile

Wenn der Kram in einer Datei ist, muss ich nur noch einen Weg finden, die Drucker nacheinander zu importieren. Ich wäre auch dankbar für andere Vorschläge...
Danke für die Aufmerksamkeit, jetzt sind die Helden gefragt face-smile

Content-Key: 20792

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

Printed on: April 19, 2024 at 07:04 o'clock

Member: coli
coli Dec 01, 2005 at 23:04:25 (UTC)
Goto Top
server oder arbeitsgruppe ??

coli
Member: gemini
gemini Dec 02, 2005 at 05:08:45 (UTC)
Goto Top
Hi MuriBln,

welche Art Scripte setzt du ein? Batch, VBS?

Anyway, du könntest im Script die Variable %USERNAME% oder das entspr. VBS-Pendant abfragen und dann mit IF oder eleganter mit CASE auswerten.

Mimik:
Select Case %USERNAME%
Case "Meier'  
Mapping für Meier (printui.dll, con2prt, AddWindowsPrinterConnection etc.)
Case "Huber"  
Mapping für Huber
Case ...
Mapping für ...
Case Else
Wenn kein Case zurifft
End Select

Eine Liste der Drucker ist dazu nicht nötig, schon gar nicht auf dem Client.

Greetz
gemini
Member: superboh
superboh Dec 02, 2005 at 07:57:27 (UTC)
Goto Top
Hi,

darf man mal fragen, warum Du keine servergespeicherten Profile nutzt? Beim Welchel des Arbeitsplatzes gibt es nämlich sonst auch noch andere Probleme, weil alle Programme nicht konfiguriert sind, ...

Gruss,
Thomas
Member: MuriBln
MuriBln Dec 02, 2005 at 10:45:01 (UTC)
Goto Top
Hi,

@coli: Ich verstehe die Frage nicht face-smile Es ist eine Domäne!

@gemini: Ich wollte per Batch und Reg-Export Tool eine Liste der Drucker erstellen lassen (z.B. im Logonskript) und mit con2prt einfach bei einer Anmeldung mappen. Die Liste würde im zentralen Home liegen und somit wäre das Profile bzgl. Drucker unwichtig.

Ok.. es ist etwas abgehoben, aber zentrale Profile für WS haben wir nun mal nicht.
Und die Benutzer müssen bei einem Wechsel des Arbeitsplatz viele Drucker installieren.

mfg
MuriBln
Member: MuriBln
MuriBln Dec 02, 2005 at 10:48:49 (UTC)
Goto Top
Hi Thomas,

rischtisch....
Ich gebe Dir natürlich Recht.. aber wir haben nun mal keine!
Ist nicht meine Entscheidung....

Ich brauche nur eine Sinnvolle Möglichkeit eine Liste der vorhandenen Drucker zu erstellen.
Den Rest würde ich schon hinbekommen...

mfg
MuriBln
Member: coli
coli Dec 02, 2005 at 16:26:03 (UTC)
Goto Top
strLogonServer = "\\Server"
strFilesServer = strLogonServer
strPrintServer = strLogonServer
'
strUNCPrinter1 = strPrintServer & "\KMS_H07_Farblaserdrucker"
' strUNCPrinter2 = strPrintServer & "\KMS_H08_SWLaserdrucker"
' strUNCPrinter3 = strPrintServer & "\KMS_H08_FarbInjektDrucker"
' strUNCPrinter4 = strPrintServer & "\KMS_H06_Klasse_1A"
' strUNCPrinter5 = strPrintServer & "\KMS_H05_Klasse_2A"
' strUNCPrinter6 = strPrintServer & "\KMS_H09_Klasse_3A"
' strUNCPrinter7 = strPrintServer & "\KMS_H09_Klasse_4A"
'
objNetwork.RemovePrinterConnection strUNCPrinter1, bForce, bUpdateProfile
' objNetwork.RemovePrinterConnection strUNCPrinter2, bForce, bUpdateProfile
' objNetwork.RemovePrinterConnection strUNCPrinter3, bForce, bUpdateProfile
' objNetwork.RemovePrinterConnection strUNCPrinter4, bForce, bUpdateProfile
' objNetwork.RemovePrinterConnection strUNCPrinter5, bForce, bUpdateProfile
' objNetwork.RemovePrinterConnection strUNCPrinter6, bForce, bUpdateProfile
' objNetwork.RemovePrinterConnection strUNCPrinter7, bForce, bUpdateProfile
'
Select Case strUserName ' oder strComputer
' **ist eher sinnvoll bei wenigen user oder computer, sonst location
'
Case "4007231053"
strUNCPrinterPath = strUNCPrinter1
Case "Administrator"
strUNCPrinterPath = strUNCPrinter1
'Case Else
' strUNCPrinterPath = strUNCPrinter1
End Select
'
'
objNetwork.AddWindowsPrinterConnection strUNCPrinterPath
objNetwork.SetDefaultPrinter strUNCPrinterPath

ich hoffe dich richtig verstanden zu haben face-smile
coli
Member: MuriBln
MuriBln Dec 02, 2005 at 17:33:29 (UTC)
Goto Top
Hi coli,

danke für die Mühe, ich brauche aber ein Skript ohne Abhängigkeiten...

Dies ist nun mein Ansatz:

Option Explicit
Dim WshShell, DefaultPrinter
set WshShell = CreateObject("WScript.shell")
On Error Resume Next
DefaultPrinter = LCase(WshShell.RegRead ("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"))
DefaultPrinter = Left(DefaultPrinter , instr(3,DefaultPrinter,",")-1)
if instr(1,DefaultPrinter,"\\") <> 1 Then DefaultPrinter = ""
wscript.echo DefaultPrinter

Ich bekomme so den Standard Drucker ausgegeben und kann es sichern; bei bedarf mit con2prt mappen.
Leider nun doch wieder mit VBS, es wird wohl nicht ohne gehen und auch noch ergänzt werden müssen um auch die restlichen Drucker zu ex-/importieren.
Dies kommt nun ins Logonskript und wird bei bedarf die Druckerliste sichern oder restoren.
Danke noch mal,
mfg
MuriBln