2012-04-10 20 views
0

Also arbeite ich in der IT bei der Arbeit, und ich versuche, einige Routine-Sachen zu automatisieren. Wir haben ungefähr 5 Drucker und ich möchte ein Skript schreiben, das alle installiert.Der effizienteste Weg, um mehrere Drucker programmatisch zu installieren

Was wäre der beste Weg, dies zu tun? Was wäre wahrscheinlich die einfachste Sprache/Bibliothek? Ich bin ziemlich kompetent in Python, PHP und Javascript (offensichtlich nicht ideal dafür geeignet) und ich habe ein bisschen in C# gearbeitet (sehr minimal, und meistens asp.net Sachen), aber ich bin nicht gegen das Picken up/in einer anderen Sprache arbeiten, um zu versuchen, diese Funktion zu implementieren.

Von was ich sehe, sind meine zwei Hauptoptionen entweder eine Shell-Operation mit sagen Rundall printui, oder möglicherweise COM-Objekte (mein Wissen über COM ist begrenzt). Gibt es andere wirksame Möglichkeiten?

Tut mir leid, wenn diese Frage etwas Subjektivität hat - wenn irgendjemand möchte, bin ich glücklich, Pseudocode von dem zu geben, was ich versuche zu schreiben. Ich bin auch glücklich, die Frage zu verbessern - ich versuche, nicht übermäßig breit zu sein, aber selbst nach einigen Recherchen ist mein Verständnis der Umsetzung noch unvollständig.

EDIT: Hinweis, das ist vor allem für Windows Vista und 7. Wir haben ein oder zwei Maschinen mit XP, aber sie sind nicht kritisch und wenn nötig, kann manuell durchgeführt werden.

Antwort

0

Auf einem Windows-System glaube ich, dass Sie Print Migrator verwenden können (XP, Vista). Nicht ganz so allgemein wie das Schreiben eines eigenen Skripts, aber wahrscheinlich viel einfacher.

+0

Eh, möglicherweise sehen, obwohl ich nicht glaube, dies ist wahrscheinlich einer Aufgabe zu schwierig ist. Ich vermute ungefähr 3-4 Stunden, nachdem ich wirklich verstanden habe, welche Frage ich zu lösen versuche. Ich werde das überprüfen, aber immer noch eine programmatische Lösung. –

1

Die meisten IT-Leute würden wahrscheinlich PrintUI über VBScript oder etwas (zusammen mit Gruppenrichtlinientricks) verwenden, aber es gibt keinen Grund, dass Sie das gleiche in Python machen können.

Ein paar gute reasources für das Druckmanagement PrintUI mit:

Command Line Printer Control

Bruce's Printing Pages

In Python würden Sie einfach verwenden subprocess oder ähnliche, die Anrufe zu machen.

Als einfaches Beispiel, ein Netzwerk-Druck die sich auf einem Druckserver irgendwo auf der Karte:

import subprocess 
subprocess.call(r'RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /c\\computername /n\\printservername\printer') 
0

spät, aber vielleicht ein für einen Teil der Antwort helfen können ... wenn Sie inf verwenden Datei. In diesem Fall ist für einen lokalen Drucker,

>>>> Um dies ohne Assistenten zu tun, muss der Treiber signiert werden.

Windows 7:

INSTALLATION:

  • erster Befehl installieren: RUNDLL32 PRINTUI.DLL,PrintUIEntry /if /b "Printer name" /f "driver.inf" /r "com1" /m "driver model name" /h "Intel"
  • zweiter Befehl Standarddrucker festgelegt: RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "Printer name"
  • Für die Installation benötigen Sie nur einen Befehl. Kann die "com1" ändern, wenn Sie usb verwenden, wählen Sie die meisten gemeinsamen "usb001".

UNINSTALL:

einen Drucker deinstallieren Sie benötigen 3-Befehle und streng die Sequenz folgen:

  1. Die erste, müssen Sie alle Drucker mit diesem Namen entfernen, die Sie sehen in kann " Gerät und Drucker ": RUNDLL32 PRINTUI.DLL,PrintUIEntry /dl /n "Printer Name" /h "Intel"
  2. Der zweite Befehl ist, den Druckertreiber zu entfernen: . Danach sehen Sie den Drucker und den Treiber nicht, aber wenn Sie das USB-Gerät trennen und erneut anschließen, wird der Treiber automatisch installiert. Dies liegt daran, dass Windows das Treiberinstallationspaket zu C:\Windows\System32\DriverStore\FileRepository hinzufügt und wir es mit dem dritten Befehl deinstallieren müssen.
  3. Der dritte Befehl entfernt das OEM * .inf, das von Windows erstellt wird, wenn ein Treiber installiert wird. Um diese Aufgabe abzuschließen, benötigen Sie 2 Befehle, der erste ist, nach dem Namen von oem * .inf zu suchen. Benutzen Sie diese pnputil.exe -e um alle oem * .inf anzuzeigen und benutzen Sie diesen Namen mit dem Namen in hands pnputil.exe -f -d oem5.inf (ändern Sie die Name des oem5.inf entsprechen Sie Datei inf)

ich habe thoses taks C und Visual C++ 6 programmatisch mit - mit dieser Befehle, mit Ausnahme der oEM suchen * .inf Namen, den Sie brauchen, um Analysieren Sie alle INF-Dateien unter C:\Windows\Inf\. Ein weiterer zu automatisierender Parameter ist die Verwendung von/q, ohne dass der Benutzer darüber benachrichtigt wird.

Es gibt ein Verhalten, das Sie bei der Installation von CLI beachten müssen ... Führen Sie nicht zwei Installationen für denselben Drucker aus, Windows erstellt einen zufälligen Namen wie Sie Drucker B installieren und Windows wird in Drucker B umbenannt (copy_A) oder etwas anderes, wenn der Drucker B bereits existiert. Und wenn Sie eine Deinstallation durchführen müssen, müssen Sie die beiden Drucker entfernen, bevor Sie zum zweiten Befehl gehen, um den Treiber zu deinstallieren.

Für die Remote-Drucker müssen Sie die Paramter ändern, finden http://technet.microsoft.com/en-us/library/ee624057.aspx

auch den Code über devcon https://code.msdn.microsoft.com/windowshardware/DevCon-Sample-4e95d71c

Verwandte Themen