プリンタ入替時に全PCの既定プリンタを遠隔変更する方法

当ページのリンクには広告が含まれています。

SKYSEAとバッチでプリンタ一覧確認から既定プリンタ変更まで実施した記録

職場でプリンタを入れ替えた時やメインとなるプリンタを変更した場合に必要となるのが、
各端末の既定プリンタ変更です。

職員毎にPCが1台ずつ割り当てられていれば、プリンタ変更を依頼して終了となりますが、
組織によっては共有PCを使っており、管理者から一括で変更したい時があります。

プリンタ本体の入替やドライバの設定が終わっていても、各PCの既定プリンタが古いプリンタのままだと、職員から次のような問い合わせが発生します。

  • 印刷しようとしたら古いプリンタに出力される
  • 印刷先を毎回手動で選び直す必要がある
  • 印刷できないと思ったら既定プリンタが違っていた

台数が少なければ1台ずつ確認して回ることもできますが、組織内に多数のPCがある場合、手作業で対応するのは現実的ではありません。

そこで今回は、バッチをSKYSEAで遠隔実行し、
各端末にインストールされているプリンタの確認と、
既定プリンタの変更を一括で行った方法を紹介します。

目次

既定プリンタ変更の概要

今回の目的は、プリンタ入替後に次の作業をできるだけ遠隔でかつ一括で行うことでした。

特に重要なのは、プリンタ名が端末によって微妙に異なる場合があるという点です。

たとえば、同じプリンタでも次のように表示名が異なることがあります。
プリンタドライバインストール時のルールを決めていないと、

  • インストールした担当者によってプリンタ名が異なる
  • インストールした時期によってプリンタ名が異なる

ということが発生します。

A-PR1
A-PR1 (Fujitsu_XL)
A-PR2
A-PR2(EPSON_PX)

そのため、完全一致だけで判定すると失敗する可能性があります。
今回は、対象プリンタ名の先頭が一致するものを探し、該当するプリンタが存在する場合のみ既定プリンタに変更するようにしました。

全体の流れ

今回の作業は、次の4段階で実施しました。

  1. 各PCでプリンタ一覧取得バッチを実行
  2. 共有フォルダに端末ごとの結果ファイルを保存
  3. PowerShellで結果をCSVに集約
  4. 対象プリンタが存在するPCに既定プリンタ変更バッチを実行

いきなり既定プリンタ変更バッチを流すのではなく、まずは各端末にどのプリンタが入っているか確認する流れにしています。

このひと手間を入れることで、対象プリンタが正しくインストールされているか、プリンタ名が想定どおりかを事前に確認できます。

1. 各端末のプリンタ一覧を取得するバッチ

まず、各クライアントPCにインストールされているプリンタ一覧を取得するバッチを作成しました。

@echo off
:: ==============================
:: 各クライアントのプリンタ一覧取得バッチ
:: ==============================

:: 現在のホスト名を取得
set HOSTNAME=%COMPUTERNAME%

:: 保存先フォルダ
set OUTPUTDIR=\\<共有ファイルサーバ名>\getprinter(フォルダ名)

:: 出力ファイル名(ホスト名付き)
set OUTPUTFILE=%OUTPUTDIR%\PrinterList_%HOSTNAME%.txt

:: 見出し出力
echo ===== プリンタ一覧 取得結果 ===== > "%OUTPUTFILE%"
echo 実行日時: %date% %time% >> "%OUTPUTFILE%"
echo ホスト名 : %HOSTNAME% >> "%OUTPUTFILE%"
echo. >> "%OUTPUTFILE%"

:: プリンタ一覧取得
wmic printer get name >> "%OUTPUTFILE%"

このバッチでは、実行したPCのホスト名を取得し、共有フォルダに次のようなファイル名で結果を保存します。

PrinterList_PC001.txt
PrinterList_PC002.txt
PrinterList_PC003.txt

ホスト名をファイル名に含めることで、どのPCにどのプリンタが入っているか後から確認しやすくなります。

出力先は共有フォルダにする

出力先は、各端末から書き込み可能な共有フォルダにします。

今回の例では、次の共有フォルダを使用しています。

このフォルダに対して、対象PCから書き込みできる権限が必要です。

うまく出力されない場合は、まず次の点を確認します。

  • 共有フォルダにアクセスできるか
  • 対象端末のユーザー権限で書き込みできるか
  • セキュリティソフトやファイアウォールでブロックされていないか
  • ネットワークパスに誤りがないか

2. 出力されたプリンタ一覧をCSVにまとめる

各端末から出力されたテキストファイルは、そのままだと確認しづらいため、PowerShellで1つのCSVファイルにまとめました。

$InputDir = '\\<共有ファイルサーバ名>\getprinter(フォルダ名)'
$InputDir = ($InputDir -replace '[\r\n]','').Trim()
if (-not (Test-Path $InputDir)) { Write-Error "Path not found: $InputDir"; break }

$OutputCsv = Join-Path $InputDir 'AllPrinters_rebuilt.csv'

$rows = Get-ChildItem -LiteralPath $InputDir -Filter 'PrinterList_*.txt' -File |
  ForEach-Object {
    $HostName = $_.BaseName -replace '^PrinterList_',''
    Get-Content -LiteralPath $_.FullName |
      Where-Object { $_ -match '^(?!=====|実行日時|ホスト名|Name|^$).+' } |
      ForEach-Object {
        [pscustomobject]@{
          HostName    = $HostName
          PrinterName = $_.Trim()
        }
      }
  }

$rows | Sort-Object HostName, PrinterName |
  Export-Csv -Path $OutputCsv -NoTypeInformation -Encoding UTF8

"CSV作成完了: $OutputCsv"

このPowerShellを実行すると、共有フォルダ内に次のCSVファイルが作成されます。

AllPrinters_rebuilt.csv

CSVには、次のような形式で端末名とプリンタ名が出力されます。

HostName,PrinterName
PC001,A-PR1
PC001,Microsoft Print to PDF
PC002,A-PR1 (Fujitsu_XL)
PC002,Microsoft Print to PDF

これにより、Excelで開いてフィルターをかけながら確認できます。

たとえば、A-PR1 で検索すれば、対象プリンタがインストールされている端末を簡単に確認できます。


CSV化するメリット

プリンタ一覧をCSVにまとめると、次のような確認がしやすくなります。

  • 対象プリンタが入っているPC
  • 対象プリンタが入っていないPC
  • 古いプリンタが残っているPC
  • 拠点ごとのプリンタ名の違い
  • プリンタドライバの表記ゆれ

プリンタ入替後は、既定プリンタの変更だけでなく、古いプリンタが残っていないか確認することも重要です。

CSV化しておくと、作業前後の記録としても残せます。

3. 対象プリンタを既定プリンタに変更するバッチ

プリンタ名を確認したうえで、対象プリンタを既定プリンタに変更するバッチを作成しました。

@echo off
REM ==============================
REM  A-PR1 を既定プリンタにする(バッチのみ)
REM  存在しない場合は何もしない(エラー表示なし)
REM ==============================

setlocal ENABLEDELAYEDEXPANSION
set "TARGET=A-PR1"

REM 前方一致(A-PR1 で始まる名前)をチェック
REM 例: A-PR1 (FUJITSU XL) など
for /f "usebackq tokens=2 delims==" %%A in (`
    wmic printer where "Name like '%TARGET%%%'" get Name /value 2^>nul ^| findstr /I "^Name="
`) do (
    set "MATCH=%%~A"
    if defined MATCH (
        rundll32.exe printui.dll,PrintUIEntry /q /y /n "!MATCH!"
        goto :EOF
    )
)

endlocal
exit /b 0

このバッチでは、A-PR1 で始まるプリンタを探し、見つかった場合だけ既定プリンタに変更します。

ポイントは、完全一致ではなく前方一致で探していることです。

set "TARGET=A-PR1"

この部分を変更すれば、別のプリンタにも応用できます。

たとえば、対象プリンタが B-PR1 の場合は次のように変更します。

set "TARGET=B-PR1"

既定プリンタ変更に使っているコマンド

既定プリンタの変更には、次のコマンドを使用しています。

rundll32.exe printui.dll,PrintUIEntry /q /y /n "プリンタ名"

主な意味は次のとおりです。

オプション意味
/qサイレント実行する
/y指定したプリンタを既定プリンタにする
/nプリンタ名を指定する

この方法により、画面上に余計なメッセージを出さずに既定プリンタを変更できます。

SKYSEAなどの管理ツールから遠隔実行する場合、エラー画面や確認画面が出ると職員から質問が出るのでサイレント実行可能であることは重要です。

4. SKYSEAで遠隔実行する

作成したバッチは、SKYSEA Client Viewのソフトウェア配布やスクリプト実行機能を使って各端末へ実行しました。

Active Directory で配布しても良いと思います。

実施順としては、次の流れがおすすめです。

手順1:プリンタ一覧取得バッチを実行する

まずは、全端末に対してプリンタ一覧取得バッチを実行します。

この段階では設定変更は行わず、各PCに入っているプリンタ名を確認するだけです。

手順2:共有フォルダに結果が出力されたか確認する

共有フォルダに、各端末分のファイルが作成されているか確認します。

PrinterList_PC001.txt
PrinterList_PC002.txt
PrinterList_PC003.txt

ファイルが出力されていない端末がある場合は、次のような原因が考えられます。

  • 端末の電源が入っていない
  • ネットワークに接続されていない
  • 共有フォルダへの書き込み権限がない
  • SKYSEAの実行タイミングで端末がオフラインだった(SKYSEAで確認できます。)

手順3:PowerShellでCSVにまとめる

出力されたテキストファイルをCSVにまとめます。

CSVをExcelで開き、対象プリンタ名が存在するか確認します。

手順4:既定プリンタ変更バッチを実行する

対象プリンタがインストールされていることを確認したうえで、既定プリンタ変更バッチをSKYSEAで実行します。

このバッチは、対象プリンタが存在しない場合は何もしないため、比較的安全に配布できます。

5. 実行時の注意点

Windowsの「通常使うプリンターを管理する」設定に注意

Windows 10/11では、次の設定が有効になっていると、Windowsが最後に使ったプリンタを自動的に既定プリンタに変更する場合があります。

Windowsで通常使うプリンターを管理する

この設定が有効だと、せっかく既定プリンタを変更しても、利用状況によって別のプリンタに戻ることがあります。

必要に応じて、設定画面からこの項目をオフにしておくと安定します。

確認場所は次のとおりです。

設定
 → Bluetoothとデバイス
 → プリンターとスキャナー
 → Windowsで通常使うプリンターを管理する

法人端末で統一したい場合は、グループポリシーで制御できます。

ユーザーの構成
  → 管理用テンプレート
    → コントロール パネル
      → プリンター
        → Windows の既定のプリンター管理を無効にする

プリンタ名は必ず事前確認する

既定プリンタ変更バッチでは、プリンタ名をもとに対象を判定します。

そのため、実際に端末上で表示されているプリンタ名が想定と違うと、正しく変更されません。

特に次のようなケースでは注意が必要です。

  • プリンタ名に機種名が付いている
  • ドライバ更新後に名前が変わっている
  • 拠点ごとにプリンタ名の付け方が違う
  • 同じプリンタが複数登録されている
  • 古いプリンタ名が残っている

今回、最初にプリンタ一覧を取得する流れにしたのは、この確認を行うためです。

いきなり全台に流さず、数台でテストする

バッチ自体はシンプルですが、いきなり全台に配布するのは避けた方が安全です。

まずは、次のような端末でテストします。

  • テスト用PC
  • 同じ拠点のテスト端末
  • 対象プリンタが入っている端末
  • 対象プリンタが入っていない端末

特に、対象プリンタが存在しない場合に何も起きないことを確認しておくと安心です。

6. この方法のメリット

今回の方法には、次のようなメリットがあります。

端末を1台ずつ触らなくてよい

SKYSEAから一括実行できるため、各部署や各拠点を回って作業する必要がありません。

プリンタ入替作業は、現地対応だけでも時間がかかるため、既定プリンタ変更を遠隔で済ませられるメリットは大きいです。

作業結果を記録として残せる

プリンタ一覧をテキストやCSVで残しておくことで、作業前後の状態を記録できます。

あとから問い合わせがあった場合も、

「このPCにはこのプリンタが入っていた」
「この時点では対象プリンタが登録されていた」

と確認できます。

プリンタ名の表記ゆれに対応しやすい

完全一致ではなく前方一致で対象プリンタを探しているため、プリンタ名に機種名などが付いていても対応しやすくなります。

たとえば、次のような名前でも A-PR1 で始まっていれば対象にできます。

A-PR1
A-PR1 (Fujitsu_XL)

対象プリンタがない端末では何もしない

対象プリンタが存在しない場合は何もせず終了するため、別拠点の端末や対象外端末に配布しても影響を抑えられます。

もちろん事前テストは必要ですが、運用上は扱いやすい作りです。

7. 実際に使って感じたこと

プリンタの入替作業では、プリンタ本体やドライバの設定に目が行きがちですが、実際には各端末の既定プリンタ設定も重要です。

職員から見ると、プリンタが入れ替わったことよりも、

「今までどおり印刷ボタンを押して、正しいプリンタから出るか」

が大事です。

既定プリンタが古いままだと、印刷のたびに出力先を選び直す必要があり、現場の小さなストレスになります。

特に保育園、福祉施設などでは、PC操作に詳しい職員ばかりではありません。

そのため、システム管理側であらかじめ既定プリンタまで整えておくことで、問い合わせを減らし、現場の混乱を防ぐことができます。

まとめ

今回は、プリンタ入替時に各端末の既定プリンタを遠隔で変更する方法を紹介しました。

作業の流れは次のとおりです。

  1. プリンタ一覧取得バッチを実行する
  2. 各端末のプリンタ一覧を共有フォルダへ出力する
  3. PowerShellで結果をCSVにまとめる
  4. 対象プリンタ名を確認する
  5. 既定プリンタ変更バッチをSKYSEAで実行する

いきなり既定プリンタを変更するのではなく、まずプリンタ一覧を取得して確認することで、安全に作業できます。

プリンタ入替は頻繁にある作業ではありませんが、発生すると複数台への対応が必要になり、意外と時間を取られます。

SKYSEAなどの管理ツールとバッチを組み合わせることで、端末を1台ずつ操作せずに、効率よく設定変更を行うことができました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

はじめまして、「ぴろりん」です。
社会福祉法人で総務を担当しながら、IT運用管理・情報セキュリティ対応など、いわゆる「ひとり情シス」業務も兼務しています。
このブログでは、IT運用管理・PC修理・情報セキュリティ対応・資格学習など、実務で直面した課題とその解決策を発信しています。
同じような悩みを抱える方のお役に立てれば幸いです。

目次