日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

PowerShellでドライバの更新状況を確認する方法

PowerShellでドライバの更新状況を確認する方法に対する実務上の答えは「Get-CimInstance Win32_PnPSignedDriverで現在のdriver情報を取得し、PnPUtilでdriver store、Windows Update履歴やSetupAPI logで更新経路を補います。DriverDateだけを最終更新日と断定しません。」です。ここでは現在導入済みdriverのversion/dateと、いつどの経路で更新されたかを別のevidenceとして扱う前提を明示し、初回確認、sample実行、本番判定、元へ戻す条件をそれぞれ独立させます。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

DeviceIDとfriendly nameで対象を特定する

ドライバー更新状況は、PnPデバイスのInstanceIdと署名済みドライバーのDeviceIDを対応付けて確認します。対象機器の状態、DriverVersion、DriverDate、Signerを記録し、Windows Updateの履歴だけで最新版と断定しません。メーカーの対象OS・機種表と照合し、更新操作は復元手段を準備した別工程にします。

  • Get-PnpDeviceで対象deviceのInstanceIdとStatusを確認する
  • Win32_PnPSignedDriverでversion、provider、InfNameを取得する
  • pnputil /enum-driversでpublished nameを確認する
  • Windows Update履歴とsetupapi.dev.logの調査期間を確認する

署名済みdriverのversion・date・INFを読む

  • DriverDateをinstall日時とみなす
  • Win32_Productのような別inventoryを使う
  • 同名deviceのInstanceIdを見ない
  • driver store packageを現在使用中と断定する
  • PnPUtil削除を調査中に行う

PnP device statusとproblem codeを照合する

署名付きdriver一覧を限定

Get-CimInstance Win32_PnPSignedDriver |
  Select-Object DeviceName,DeviceID,DriverProviderName,DriverVersion,DriverDate,InfName,IsSigned |
  Sort-Object DeviceName

全件は多いためDeviceClassやDeviceIDで対象を絞ります。

display driverを確認

Get-CimInstance Win32_PnPSignedDriver | Where-Object DeviceClass -eq 'DISPLAY' |
  Select-Object DeviceName,DriverProviderName,DriverVersion,DriverDate,InfName

DriverDateはpackage metadataで、実際のinstall時刻そのものとは限りません。

device statusを照合

Get-PnpDevice -PresentOnly | Where-Object Class -eq 'Display' |
  Select-Object Status,Class,FriendlyName,InstanceId

Status Errorならproblem codeやevent logを追加調査します。

driver storeを読み取り列挙

pnputil.exe /enum-drivers /class Display

Windows buildによりfilter option対応が異なるためpnputil /?を確認します。削除・追加optionは実行しません。

Windows Update eventを期間検索

Get-WinEvent -FilterHashtable @{LogName='System';ProviderName='Microsoft-Windows-WindowsUpdateClient';StartTime=(Get-Date).AddDays(-14)} -MaxEvents 200 |
  Select-Object TimeCreated,Id,Message

driver更新だけを確実に示すとは限らないため、device/INF情報と突合します。

driver storeをpnputilで読み取り列挙する

DriverVersion、DriverDate、install event時刻、file timestampは別の値です。OEMが日付を固定するpackageもあり、日付順だけで新旧を決めません。deviceは同名でもInstanceIdが違い、driver storeに未使用packageが残ることもあります。現在利用中のINFとversionをdevice instanceへ結びます。

Windows Update eventを期間限定で確認する

確認commandは読み取りです。PnPUtilのadd/delete/installやDevice Managerのrollbackは接続断、表示消失、再起動を招くため別手順にします。更新前にmodel、hardware ID、current INF/version、vendor package署名、restore手段、BitLocker、maintenanceを確認します。異常時は承認済みrollback driverまたはvendor recoveryを使い、driver storeを未確認で整理しません。

更新・rollback操作をinventoryから分離する

Device ManagerのDriver tab、Win32_PnPSignedDriver、PnPUtilのprovider/version/INFを照合します。更新履歴はWindows Update、SetupAPI log、vendor deployment logを時刻で突合し、再起動後のdevice Statusと業務機能を確認します。

device・driver・eventの三sourceで検収する

Win32_PnPSignedDriverのDeviceID、DriverVersion、DriverDate、InfName、SignerとGet-PnpDeviceのStatusをkeyで対応付けます。Windows Update eventは更新履歴の補助であり、現在読み込まれたdriverが最新かどうかを一つの列だけで断定しません。

display driverをCIMとPnPで対応付ける

$d=Get-CimInstance Win32_PnPSignedDriver | Where-Object DeviceClass -eq 'DISPLAY'
$d | Select-Object DeviceName,DeviceID,DriverVersion,DriverDate,InfName,DriverProviderName,Signer

driver候補の一意性をDeviceIDで決める

  • driverを一意化:対象DeviceIDに一件のdriver packageとpresent deviceが対応し、version/date/signer/statusを取得できる
  • 候補複数・未検出:更新event 0件は未更新の証明にせず、調査期間外やvendor updaterを保留にする
  • PnP・CIM error:device欠落、ProblemCode、unsigned、CIM/access errorは個別stateとして報告する

DriverDateだけで新旧比較せず、vendorのdevice hardware ID別releaseを参照します。pnputil /enum-driversはdriver store一覧で、現在使用中との同義ではありません。確認段階で自動updateやdriver削除をしません。

署名なしと非Present deviceを試す

Get-PnpDevice -PresentOnly | Where-Object Class -eq 'Display' | Select-Object Status,Class,FriendlyName,InstanceId,Problem,ProblemDescription

正常、複数GPU、disabled、problem code、driver storeのみ、event 0件をtestします。DeviceID/InstanceId、version、date、INF、signer、PnP status、event IDを同時刻で保存します。

新しい日付だけで更新要否を決めず、DeviceID、INF、provider、version、署名、device statusを一組で比較します。installやrollbackはvendor要件と復旧方法を確認した別作業です。

公式情報・参考資料

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次