
これにより、組織内のWindowsPCに対し、プリンターの設定を配信できるようになります。
- 操作・管理デバイス環境:
- OS:Windows 11
- Webブラウザー:Edge
- 使用プラン:Microsoft 365 Business Premium
- プリンター:EPSONビジネス向けプリンター(PX-M885F)
*ネットワークプリンターとして使用
今回紹介する記事は、プリンタードライバー内のファイル構成の読み解きが必要で、プリンターのメーカーや機種によってファイル構成が大きく異なるため、設定で試行錯誤するかもしれません。
EPSONのビジネスプリンターをお使いの場合は、同社のサポートサイトから入手できる管理ツール(My EPSONへのログインが必要)でパッケージを作成して配布する方が楽です(これについても今後の記事で紹介します)
Microsoft Intuneによるプリンタードライバーの配布を検討されている方は、この記事の作業手順を鵜呑みにするのではなく、ファイル構成の読み解きの方法や作業全体の流れを参考につつ、具体的な手順はご自身の環境に合わせて読み替えていただけたらと思います。
- プリンタードライバー入手・展開
- 展開済ドライバーにて必要ファイルの確認・収集
- 収集済ファイルによるドライバー追加検証
- ドライバー配布用PowerShell作成
- 作成済PowerShell動作検証
- インストール済ドライバー使用不可時の対処(参考)
プリンタードライバー入手・展開
Webブラウザーにてプリンターメーカーのドライバーダウンロードサイトにアクセスし、お使いのプリンターのドライバーをダウンロードします(この例ではEPSON PX-M885F)。



プリンタードライバーを展開するための解凍ツール(7-Zip等)が未導入の場合は、公式サイトからダウンロード・インストールしておきます。

図表1-3でダウンロードしたプリンタードライバーのファイルを右クリックし、[その他のオプションを確認]を選択します。
画面イメージのようにその他のオプションが表示されたら、[7-Zip>展開]を選択します。

展開を進めます(画面イメージは7-Zipを使用した場合)。

展開結果のフォルダーが作成されたら、中身を確認します。
サブフォルダーやファイルが表示されれば問題ありません。
このエクスプローラーの画面は次の工程で使用しますので、閉じずにそのままにしておきます。

展開済ドライバーにて必要ファイルの確認・収集
エクスプローラーを別途起動し、作業用フォルダーを作成し(この例ではC:\temp\printer_test)、その下にinputフォルダーとoutputフォルダーを作成します。
さらに、inputフォルダーに移動します。

前の工程でドライバーを展開した時のエクスプローラー画面に戻り、INFファイルを見つけたら、テキストエディタでこれを開きます。
この例のように、INFファイルが複数ある場合は、”Class=Printer”のような記述があればそれがプリンタードライバー用のINFファイルです。

プリンタードライバー用のINFファイルの内容から、他に必要なファイルを特定します。
- [Version]に”CatalogFile=xxx.CAT”のような記述あり:このファイルが必要
- [SourceDiskNames]にCAB等のファイル名の記述あり:このファイルが必要
- 上記のようなファイル名の記述なし:数字を確認し、[SourceDisksFiles]に同じ数字が振られているファイルも必要
この例では、[SourceDisksFiles]の数字が2と3のファイルは[SourceDiskNames]に記述されたCABファイル内に全て格納されていました。[SourceDiskNames]にCABファイルの記述があった場合は、念のため[SourceDisksFiles]のファイルを全て含むか確認します。含まれないファイルがあれば、それも必要なファイルです。
また、CABファイルは7-Zipのような解凍ツールで展開すれば中身を確認できます。

必要なファイルを全てinputフォルダーにコピーします。
この例ではコピー対象は以下の通りです。
- INFファイル:E_WF1SYJ.INF
- CATファイル([Version]に”CatalogFile=xxx.CAT"と記述されたファイル):E_WF1SYJ.CAT
- CABファイル([SourceDisksNames]の数字が2,3のファイル): E_WF1SYJ.CAB, E_WL0SHJ.CAB
- [SourceDisksFiles]の数字が1のファイル(*):(全部で6点)
*この例では、プリンタードライバーを展開した時のファイルの拡張子の末尾が_になっていましたが、そのままの状態で問題ありません

収集済ファイルによるドライバー追加検証
PowerShellを管理者として実行し、以下コマンドを実行します。
c:\windows\System32\Pnputil.exe /add-driver "C:\temp\printer_test\input\E_WF1SYJ.INF" /install
「ドライバーパッケージが正常に追加されました。」と表示されれば問題ありません。
なお、PowerShellの画面は後で使いますので、閉じずにそのままにしておきます。

ドライバー配布用PowerShell作成
テキストエディターで新規ファイルを作成し、以下の通り記述し、inputフォルダーに「printer_add.ps1」というファイル名で保存します。
# ログファイルのパスを設定し、ログの記録を開始
$logPath = "C:\temp\printer_test\install_printer_log.txt"
Start-Transcript -Path $logPath
# 定数の指定
$driverName = "EPSON PX-M885F"
$printerName = "EPSON PX-M885F"
$printerIP = "192.168.100.100"
#パスの指定
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition #現スクリプトディレクトリ
$infFile = "$scriptDir\E_WF1SYJ.INF"
$catFile = "$scriptDir\e_wf1syj.cat"
# サイレントインストールを確実にするため、事前にCATファイルから証明書をインストール
$cert = Get-AuthenticodeSignature -FilePath $catFile
if ($cert.SignerCertificate -ne $null) {
# TrustedPublisherストアに証明書を追加
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store "TrustedPublisher", "LocalMachine"
$store.Open("ReadWrite")
$store.Add($cert.SignerCertificate)
$store.Close()
Write-Output "The certificate was successfully installed."
} else {
Write-Output "Failed to extract certificate."
}
# certutilコマンドで証明書を追加
certutil.exe -addstore "TrustedPublisher" $catFile
# パスの出力確認
Write-Host "INF File Path: $infFile"
# ドライバーのインストール
#pnputil.exe /add-driver "C:\temp\printer_test\input\E_WF1SYJ.INF" /install #ps1ローカル実行検証用(intunewin作成時はコメントアウトすること)
& "$Env:SystemRoot\Sysnative\Pnputil.exe" /add-driver $infFile /install #Intune登録用
# ドライバーの追加
if (-not (Get-PrinterDriver -Name $driverName)) {
Add-PrinterDriver -Name $driverName
}
# ポートの追加
if (-not (Get-PrinterPort -Name "IP_$printerIP")) {
Add-PrinterPort -Name "IP_$printerIP" -PrinterHostAddress $printerIP
}
# プリンターの追加
if (-not (Get-Printer -Name $printerName)) {
Add-Printer -Name $printerName -DriverName $driverName -PortName "IP_$printerIP"
}
# ログの記録を停止
Stop-Transcript

以下はスクリプトに関する補足説明です。
- 2行目でログファイルの出力先を指定しています。ps1ファイル実行時にコンソール出力される内容を記録していますので、うまく動作しない時はこれを参照します。
- 6~8,12,13行目は使用するプリンターの要件に合わせて調整します。
- CATファイルがない場合は、15~29行目の記述は不要です。
- 35,36行目はドライバーのインストールコマンドです。35行目はPC上でps1ファイルを手動実行するための記述、36行目はIntune登録用の記述です。
この後、PC上でps1ファイルを手動実行してみますので、35行目の頭の#を削除し、36行目の頭に#を付加して保存します。

作成済PowerShell動作検証
工程3で使用したPowerShellの画面に戻ります。cdコマンドで、工程4で作成したps1ファイルのあるフォルダーに移動し、ps1ファイルを実行します。
cd c:\temp\printer_test\input
.\printer_add.ps1
「ドライバーパッケージが正常に追加されました。」と表示されれば問題ありません。そうでない場合は、ps1ファイル内の記述誤りや必要ファイルの不足が考えられますので、見直します。

Windowsの[設定]メニューを起動し、[Bluetoothとデバイス>プリンターとスキャナー]を選択し、対象のプリンターが表示されるか確認します。

対象のプリンターが表示されたらこれを選択し、[プリンターのプロパティ]を選択します。
[ポート]タブにps1ファイルで指定したポートが表示されれば問題ありません。
また、操作しているPCがプリンターに接続できる環境にあれば、テスト印刷を試すとなお確実です。

検証が完了したら、Intune登録用に、ps1ファイルの35,36行目のコメント状態を元に戻しておきます。

インストール済ドライバー使用不可時の対処(参考)
前の工程でプリンタードライバーのインストールが正常に行われたのに、プリンターとスキャナー画面上、「ドライバーは使用できません」と表示されることがあります。
ドライバーを再インストールしても解消しない場合は、Microsoft Intuneやグループポリシーの設定で、USBデバイスやネットワークの使用制限をかけている可能性があります。
参考まで、Microsoft IntuneでUSBデバイスの使用制限を行っている環境において、このプリンタードライバーの使用を許可する方法を紹介します。

プリンタードライバーのインストールを試みたPC上で[デバイスマネージャー]を起動し、[印刷キュー]から対象のプリンターを選択し、[イベント]タブを選択し、[クラスGUID]の値を控えておきます。

WebブラウザーにてMicrosoft Intune管理センターにアクセスし、左メニューの[デバイス]を選択し、サブメニューの[デバイスの管理>構成]を選択し、USBデバイスの使用制限に関するポリシーを選択します。

[構成設定]の[編集]リンクを選択します。
検索欄に[これらのデバイス]と入力し、[これらのデバイス セットアップ クラスと一致するドライバーを使用したデバイスのインストールを許可する]を選択し、図表6-2で控えた[クラスGUID]の値を追加します。

少し時間を置いてから図表6-1のPC上で「ドライバーは使用できません」が消えるか確認します。
消えない場合は、USBデバイス以外にも使用制限が行われている可能性がありますので(ネットワークの使用制限等)、Intuneの構成ポリシー等を確認し、対応します。
ネットワークプリンターとして使用する場合、USBデバイスの使用制限は関係ないように思われそうですが、デバイスの追加や使用という観点では同じですので、注意が必要です。
次の記事に続きます。
当ブログ内の連載記事
当ブログ内の関連記事