0

だから私は仕事でITで働いており、いくつかの日常的なことを自動化しようとしています。約5台のプリンターがあり、それらすべてをインストールするスクリプトを作成したいと思います。

これを行うための最良の方法は何でしょうか?おそらく最も簡単な言語/ライブラリは何でしょうか?私はPython、PHP、およびJavascriptにかなり精通しており(明らかにこれには理想的ではありません)、C#で少し作業しました(非常に最小限で、ほとんどがasp.netのものです)が、選択することに反対していませんこの機能の実装を試みるために別の言語で作業しています。

私が見ていることから、私の2つの主なオプションは、たとえばrundll printuiを使用してシェル操作を実行するか、COMオブジェクトを使用することです(COMに関する私の知識は限られています)。他に効果的な方法はありますか?

この質問にある程度の主観がある場合は申し訳ありません。誰かが希望する場合は、私が書き込もうとしているものの擬似コードを提供させていただきます。また、質問を改善できることをうれしく思います。広すぎないように努めていますが、調査を行った後でも、実装についての理解はまだ不完全です。

編集:注意:これは主にWindows Vistaおよび7用です。XPを実行しているマシンが1台または2台ありますが、これらは重要ではなく、必要に応じて手動で実行できます。

4

3 に答える 3

1

ほとんどの IT 担当者はおそらく VBScript などを介して (グループ ポリシーのトリックと共に) PrintUI を使用するでしょうが、Python で同じことができる理由はありません。

PrintUI を使用した印刷管理に関するいくつかの優れたリソース:

コマンド ライン プリンター制御

ブルースの印刷ページ

Python では、単にsubprocessor に似たものを使用して呼び出しを行います。

非常に簡単な例として、プリント サーバーに存在するネットワーク プリントをどこかにマップするには、次のようにします。

import subprocess
subprocess.call(r'RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /c\\computername /n\\printservername\printer')
于 2012-04-10T15:13:30.413 に答える
0

遅いですが、.infファイルを使用している場合は、回答の一部に役立つ可能性があります。この場合は、ローカル プリンターの場合です。

>>>> ウィザードを使用せずにこれを行うには、ドライバーに署名する必要があります。

Windows 7 :

インストール:

  • 最初のコマンド インストール:RUNDLL32 PRINTUI.DLL,PrintUIEntry /if /b "Printer name" /f "driver.inf" /r "com1" /m "driver model name" /h "Intel"
  • 2 番目のコマンドは、既定のプリンターを設定します。RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "Printer name"
  • インストールに必要なコマンドは 1 つだけです。USB を使用している場合は「com1」を変更できますが、最も一般的な「usb001」を選択しました。

アンインストール:

プリンターをアンインストールするには、3 つのコマンドが必要で、厳密には次の順序に従います。

  1. 最初に、「デバイスとプリンター」に表示されるその名前を持つすべてのプリンターを削除する必要があります。RUNDLL32 PRINTUI.DLL,PrintUIEntry /dl /n "Printer Name" /h "Intel"
  2. 2 番目のコマンドは、プリンター ドライバーを削除することですRUNDLL32 PRINTUI.DLL,PrintUIEntry /dd /m "driver model name" /h "Intel"。この後、プリンターとドライバーは表示されませんが、USB デバイスを取り外して再度接続すると、ドライバーが自動的にインストールされます。これは、Windows がドライバー インストール パックを追加C:\Windows\System32\DriverStore\FileRepositoryし、3 番目のコマンドでアンインストールする必要があるためです。
  3. 3 番目のコマンドは、ドライバーのインストール時に Windows によって作成される oem*.inf を削除します。このタスクを完了するには、2 つのコマンドが必要です。最初のコマンドは、ウィンドウが作成した oem*.inf の名前を検索することです。これを使用してpnputil.exe -e、すべての oem*.inf を表示し、名前を手に入れてこれを使用しpnputil.exe -f -d oem5.infますあなたのinfファイルに対応するoem5.inf)

C と Visual C++ 6 を使用してプログラムでこれらのタスクを実行しました。このコマンドを使用しますC:\Windows\Inf\。自動化するもう 1 つのパラメーターは、/q を使用して、ユーザーに通知せずに実行することです。

cli を使用してインストールするときに注意が必要な動作があります... 同じプリンターに対して 2 つのインストールを実行しないでください。Windows は、プリンター B をインストールするようにランダムな名前を作成し、Windows はプリンター B (copy_A) などに名前を変更します。プリンター B が既に存在する場合。また、アンインストールする必要がある場合は、2 番目のコマンドでドライバーをアンインストールする前に、2 つのプリンターを削除する必要があります。

パラメータを変更する必要があるリモート プリンタについては、http: //technet.microsoft.com/en-us/library/ee624057.aspx を参照してください。

devcon に関するコードも参照してください https://code.msdn.microsoft.com/windowshardware/DevCon-Sample-4e95d71c

于 2015-01-13T18:18:09.643 に答える
0

Windows システムでは、Print Migrator ( XPVista ) を使用できると思います。独自のスクリプトを作成するほど汎用的ではありませんが、おそらくはるかに簡単です。

于 2012-04-10T13:36:34.450 に答える