I have something similar that I use. I use the smb16.exe utility (related to the smbios.exe)

first I have this is the login script
to run the smb16.exe find serial number and pipe out lines
33 and 35 due to multiple serial numbers being outputed (computer serial and motherboard serial for example) It then runs a kix script to get os version, computer name, Norton AVCE 7.5 virus definition date stamp, IE version, serial number, product name (computer model) name and userid.
Its a thrown together solution but it works 100%on all of my ibm pcs (95% on the serial number and product name)

I also have my script set up (not shown here) to only run on 9x, nt wrkstn and 2k pro with %OS% variables and gettype.exe

Good luck

[Cool]

IN LOGIN SCRIPT

if exist c:\ibm.txt goto dat
\\usut809\netlogon\smb16.exe>c:\ibm.txt
:dat
if exist c:\ibm.dat goto srvr
type c:\ibm.txt|find "serial number" /i /n|find "35">c:\ibm.dat
type c:\ibm.txt|find "product name" /i /n|find "33">>c:\ibm.dat
:os

:srvr
cls

\\usut809\netlogon\kix32.exe \\usut809\netlogon\osie.scr

THE KIX FILE OSIE.SCR

IF (@inwin = 1)
$NT_mode="yes"
ELSE
$NT_mode="no"
ENDIF

$os=""
$os_dos=@dos
$ie_product=ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer","Version")
$os_product=ReadValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions","ProductType")
$os_productSuite=ReadValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions","ProductSuite")
$os_service_pack=""
$os_subversion=ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion","SubVersionNumber")
SELECT
CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.1") AND (Instr($os_productSuite,"Terminal Server") <> 0)
$os="XP_Terminal_Server"
CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.1") ; - Windows XP Server
$os="XP_Server"
CASE ($NT_mode = "yes") AND ($os_product = "WinNT") AND ($os_dos = "5.1") AND ($os_productSuite = "personal") ; - Windows XP Home
$os="XP_Home"
CASE ($NT_mode = "yes") AND ($os_product = "WinNT") AND ($os_dos = "5.1") ; - Windows XP Professional
$os="XP_Professional"
CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.0") AND (Instr($os_productSuite,"Terminal Server") <> 0)
$os="W2K_Terminal_Server"
CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.0") ; - Windows 2000 -
$os="W2K_Server"
CASE ($NT_mode = "yes") AND ($os_product = "WinNT") AND ($os_dos = "5.0")
$os="W2K_Professional"
CASE ($NT_mode = "yes") AND ($os_product = "LANMANNT") ; - Windows NT -
$os="NT4_Domain_Controller"
CASE ($NT_mode = "yes") AND ($os_product = "ServerNT") AND (Instr($os_productSuite,"Terminal Server") <> 0)
$os="NT4_Terminal_Server"
CASE ($NT_mode = "yes") AND ($os_product = "ServerNT")
$os="NT4_Member_Server"
CASE ($NT_mode = "yes") AND ($os_product = "WinNT")
$os="NT4"
CASE ($NT_mode <> "yes") AND (@dos = "4.90")
$os="ME"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") AND (INSTR(LCASE($os_subversion),"c") <> 0) ; - Windows 98 -
$os="W98c"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") AND (INSTR(LCASE($os_subversion),"b") <> 0)
$os="W98b"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") AND (INSTR(LCASE($os_subversion),"a") <> 0)
$os="W98a"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.10")
$os="W98"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") AND (INSTR(LCASE($os_subversion),"c") <> 0) ; - Windows 95 -
$os="W95c"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") AND (INSTR(LCASE($os_subversion),"b") <> 0)
$os="W95b"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") AND (INSTR(LCASE($os_subversion),"a") <> 0)
$os="W95a"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.0")
$os="W95"
CASE 1
$os="???" ; - undetermined -
ENDSELECT
;
$os_service_pack=""
SELECT
CASE ($NT_mode = "yes") AND ($os_dos = "5.1") ; - Windows XP
$os_service_pack=ReadValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion","BuildLab")
IF (len($os_service_pack) <> 0)
$os_service_pack=LTRIM(RTRIM($os_service_pack))
$os=substr($os,1,3)+"_"+LTRIM(RTRIM($os_service_pack))
ENDIF
CASE ($NT_mode = "yes") AND ($os_dos <> "5.1") ; Windows NT4 + W2K
$os_service_pack=ReadValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion","CSDVersion")
IF (len($os_service_pack) <> 0)
$os_service_pack=LTRIM(RTRIM($os_service_pack))
IF (instr($os_service_pack,",") <> 0)
$os=substr($os,1,3)+"_"+substr($os_service_pack,instr($os_service_pack,",")-1,1)
ELSE
$os=substr($os,1,3)+"_"+substr($os_service_pack,len($os_service_pack),1)
ENDIF
ENDIF
CASE 1
; Windows 95, 98 + ME
ENDSELECT
;
$os_type=""
$os_dos=@dos
SELECT
CASE ($NT_mode = "yes") AND ($os_dos = "5.1") ; - Windows XP -
$os_type="XP"
CASE ($NT_mode = "yes") AND ($os_dos = "5.0") ; - Windows 2000 -
$os_type="W2K"
CASE ($NT_mode = "yes") ; - Windows NT -
$os_type="NT4"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.90") ; - Windows ME -
$os_type="ME"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") ; - Windows 98 -
$os_type="W98"
CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") ; - Windows 95 -
$os_type="W95"
CASE 1
$os_type="???" ; - undetermined -
ENDSELECT
$os_type=LTRIM(RTRIM(substr($os_type+" ",1,3)))
;

$vird=readprofilestring("c:\program files\common files\symantec shared\virusdefs\definfo.dat","DefDates","CurDefs")
open(1,"c:\ibm.dat",2)
$abc=readline(1)
$def=readline(1)
$abc1=substr($abc, len($abc)-6,28)
$def1=substr($def, len($def)-6,28)
close(1)
REDIRECTOUTPUT ("K:\PCUPDATE\LOG\OSie.TXT",0)
? "@hostname $OS @USERID $ie_product $vird $abc1 $def1 @fullname"
REDIRECTOUTPUT ("c:\osie.txt",0)
? "@hostname $OS @USERID $ie_product $vird $abc1 $def1 @fullname"
?