Be sure to test. I have many computers where the Win32_BIOS class returns a
blank string. Probably older computers (Windows 2000), but one has XP. I
have used the Win32_LogicalDisk class to retrieve the volume serial number.
This uniquely identifies the logical disk, but will change if the drive is
replaced (or FDisk'd). For example:
=============
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" _
& strComputer & "\root\cimv2")
Set colSettings = objRemote.ExecQuery _
("SELECT * FROM Win32_LogicalDisk WHERE Name = 'C:'")
For Each objDisk In colSettings
Wscript.Echo objDisk.VolumeSerialNumber
Next
=========
As noted, this is not a perfect solution, but it was the best I found that
worked on all computers (if they supported WMI and had a C: drive). Other
people have used OS serial number, but of course the OS can be re-installed.
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--
Post by Vilius MockûnasI've just checked Win32_BaseBoard class SerialNumber property - and its
empty - the box is lenovo think centre. So only Win32_BIOS serialnumber
left - you are sure that this is unique across all computers of the same
order ? Or maybe I should concatenate with something else to be sure ?
V
Post by Pegasus [MVP]It's a matter of preference.
Post by Vilius MockûnasAnoher guy suggested Win32_BaseBoard class SerialNumber property.
Which one is better to use ?
thanks
Vilius
Post by Pegasus [MVP]Post by Vilius MockûnasHello,
How do I uniquely identify x86 windows machines using vbscript ?
OS'es are XP or Vista.
Id should be the same even os version changes (or windows are
reinstalled with other product id).
I've used computer names before that and realized that this is mistake
because computer names are beeing changed, computers are beeing joined
and unjoined from domain and etc.
Maybe there is some hardware id or something, which looks the same
even os was reinstalled ?
thanks
Vuilius
strComputer = "Nalle"
Set objWMIService = GetObject("winmgmts:\\" & strComputer &
"\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_BIOS",,48)
For Each objItem in colItems
Wscript.Echo "BIOS Serial Number: " & objItem.SerialNumber
Next