Rubyでデフォルトプリンタの名前を取得

Rubyを使ってWindowsでデフォルトプリンタの名前を取得する方法。Win32OLEはWSHスクリプトを1:1で書き換えたら動くのが素晴らしい。

require 'win32ole'

class Printer
  def self.defaultPrinter
    locator = WIN32OLE.new("WbemScripting.SWbemLocator")
    service = locator.connectServer
    printers = service.execQuery("select * from Win32_Printer")

    default_printer = nil
    printers.each do |prn|
      default_printer = prn.caption if prn.default
    end
    default_printer
  end
end