diff options
| author | William Van Hevelingen <wvan13@gmail.com> | 2010-08-20 01:14:18 -0700 |
|---|---|---|
| committer | Matt Robinson <matt@puppetlabs.com> | 2010-12-21 16:30:46 -0800 |
| commit | f0cc2c0fde73f473cda1c0cdf95b7b6b583af5ac (patch) | |
| tree | 29fad0c841ce8b0e9b34a4853b77b88dc2559090 /lib | |
| parent | fb2f1dc3413f6b9f4b6547abd957c976049e56c5 (diff) | |
| download | facter-f0cc2c0fde73f473cda1c0cdf95b7b6b583af5ac.tar.gz facter-f0cc2c0fde73f473cda1c0cdf95b7b6b583af5ac.tar.xz facter-f0cc2c0fde73f473cda1c0cdf95b7b6b583af5ac.zip | |
(#4575) win32 support for manufacturer, productname, & serialnumber
Signed-off-by: William Van Hevelingen <wvan13@gmail.com>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/facter/manufacturer.rb | 7 | ||||
| -rw-r--r-- | lib/facter/util/manufacturer.rb | 17 |
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/facter/manufacturer.rb b/lib/facter/manufacturer.rb index cbbb88b..4f2df98 100644 --- a/lib/facter/manufacturer.rb +++ b/lib/facter/manufacturer.rb @@ -15,6 +15,13 @@ if Facter.value(:kernel) == "OpenBSD" Facter::Manufacturer.sysctl_find_system_info(mfg_keys) elsif Facter.value(:kernel) == "SunOS" and Facter.value(:hardwareisa) == "sparc" Facter::Manufacturer.prtdiag_sparc_find_system_info() +elsif Facter.value(:kernel) == "windows" + win32_keys = { + 'manufacturer' => ['Manufacturer', 'Bios'], + 'serialNumber' => ['Serialnumber', 'Bios'], + 'productname' => ['Name', 'ComputerSystemProduct'] + } + Facter::Manufacturer.win32_find_system_info(win32_keys) else query = { '[Ss]ystem [Ii]nformation' => [ diff --git a/lib/facter/util/manufacturer.rb b/lib/facter/util/manufacturer.rb index 5ac0585..22359ea 100644 --- a/lib/facter/util/manufacturer.rb +++ b/lib/facter/util/manufacturer.rb @@ -80,4 +80,21 @@ module Facter::Manufacturer end end end + + def self.win32_find_system_info(name) + require 'win32ole' + value = "" + wmi = WIN32OLE.connect("winmgmts://") + name.each do |facterkey, win32key| + query = wmi.ExecQuery("select * from Win32_#{win32key.last}") + Facter.add(facterkey) do + confine :kernel => :windows + setcode do + query.each { |x| value = x.__send__( (win32key.first).to_sym) } + value + end + end + end + end + end |
