Microsoft Endpoint Manager(旧Intune)でプリンタを配る手順です。コマンドでインストールする部分のみを記載しています。.intunewinファイルの作成やMEMでの配り方などは割愛します。
失敗例
最初、次のバッチファイルをWin32アプリとしてMEMで配布しました。手動で実行すると普通にインストール出来るのですがMEMで配るとエラーになります。
もちろんMEMで実行する時には.infファイルなどは.intunewinファイルに同梱して配りました。
1 2 3 4 5 6 7 8 9 10 11 12 |
REM 各パラメータ設定 SET IP_ADDR=192.168.0.200 SET PRN_TYPE="プリンタのタイプ" SET PRN_NAME="PRINTER名01" SET INF_FILE="%~DP0ドライバファイル.inf" REM 使うスクリプトの場所 SET SCRIPT_PATH=C:\Windows\System32\Printing_Admin_Scripts\ja-JP\ cscript %SCRIPT_PATH%prnport.vbs -a -r IP_%IP_ADDR% -h %IP_ADDR% -o raw -n 9100 cscript %SCRIPT_PATH%prndrvr.vbs -a -m %PRN_TYPE% -v 3 -i %INF_FILE% cscript %SCRIPT_PATH%prnmngr.vbs -a -p %PRN_NAME% -m %PRN_TYPE% -r IP_%IP_ADDR% |
prnportの使い方
prndrvrの使い方
prnmngrの使い方
トラブルシューティング
ログを吐くようにバッチファイルを修正してみると、prnmngr実行時に以下の様なエラーが発生していることが確認できました。
プリンターを構成することができません PRINTER01 エラー 0x80041003 アクセスは拒否されました
操作 PutInstance
プロバイダー Win32 Provider
説明 アクセスが拒否されました。
Win32 エラー コード 5
何となくSYSTEMアカウントで実行しているのが悪いのかな?と思ったのでググってみると、次の様なサイトが見つかったのでダメもとで試したところ正常に終了しました。
成功例
という事で成功したコードは以下の様になります。ちょっとみっともない気もしますが。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
REM 各パラメータ設定 SET IP_ADDR=192.168.0.200 SET PRN_TYPE="プリンタのタイプ" SET PRN_NAME="PRINTER名01" SET INF_FILE="%~DP0ドライバファイル.inf" REM 使うスクリプトの場所 SET SCRIPT_PATH=C:\Windows\System32\Printing_Admin_Scripts\ja-JP\ cscript %SCRIPT_PATH%prnport.vbs -a -r IP_%IP_ADDR% -h %IP_ADDR% -o raw -n 9100 cscript %SCRIPT_PATH%prndrvr.vbs -a -m %PRN_TYPE% -v 3 -i %INF_FILE% REM cscript %SCRIPT_PATH%prnmngr.vbs -a -p %PRN_NAME% -m %PRN_TYPE% -r IP_%IP_ADDR% rundll32.exe printui.dll PrintUIEntry /if /m %PRN_TYPE% /b %PRN_NAME% /r "IP_%IP_ADDR%" /q |
おまけ
余談ですがMEMで配る時にインストールが成功したかどうかの判定(検出ルール)には以下のレジストリの有無で判定させるといいかなと思います。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\Printer名