Code:
break on
$ = setoption('wrapateol','on')
$ = SETCONSOLE("hide")

$InvVer = '2009/01/14 - VPN Subnet reporting'

$start = @ticks

	$Make 	=Trim(Split(WMIQuery("Manufacturer","Win32_ComputerSystem"))[0])
	$Model	=trim(WMIQuery("Model","Win32_ComputerSystem"))
	$SerNo	=WMIQuery("SerialNumber","Win32_BIOS")
		If Len($SerNo) < 2 	
			$SerNo=WMIQuery("SerialNumber","Win32_SystemEnclosure")
			If InStr($serno,"|")
				For Each $Return in Split($serno,"|")
					If Len($Return)<10	$serno=$Return		EndIf
					Next
				EndIf
			EndIf
	$SerNo	=Trim(Ucase($SerNo))
	if $serNo < '1'		quit		endif

	$asset	=WMIQuery("SMBIOSAssetTag","Win32_SystemEnclosure")
	if instr($asset,"|")
		for each $return in split($asset,"|")
			if $return	$asset=$return		endif
		next
	endif

	$asset	= join(Split($asset,"|"),'')
	$asset	= Trim(Ucase($asset))

	$CPUsp	=WMIQuery("CurrentClockSpeed","Win32_Processor")
		Select
			case left($CPUsp,3) = "339"		$CPUsp=3400
			case left($CPUsp,3) = "319"		$CPUsp=3200
			case left($CPUsp,3) = "299"  		$CPUsp=3000
			case left($CPUsp,3) = "279"		$CPUsp=2800
			case left($CPUsp,3) = "269"		$CPUsp=2600
			case left($CPUsp,3) = "239"		$CPUsp=2400
			case left($CPUsp,3) = "229"		$CPUsp=2200
			case left($CPUsp,3) = "220"		$CPUsp=2200
			case left($CPUsp,3) = "199"		$CPUsp=2000
   			case left($CPUsp,3) = "186"  		$CPUsp=1860
   			case left($CPUsp,3) = "182"  		$CPUsp=1830
			case left($CPUsp,3) = "179"		$CPUsp=1800
			case left($CPUsp,3) = "169"		$CPUsp=1700
			case left($CPUsp,3) = "159"		$CPUsp=1600
			case left($CPUsp,3) = "139"		$CPUsp=1400
			case left($CPUsp,3) = "106"		$CPUsp=1100
			case left($CPUsp,2) = "99"		$CPUsp=1000
			case left($CPUsp,2) = "90"		$CPUsp=900
			case left($CPUsp,2) = "85"		$CPUsp=850
			case left($CPUsp,2) = "70"		$CPUsp=700
			case left($CPUsp,2) = "66"		$CPUsp=667
			case left($CPUsp,2) = "59"		$CPUsp=600
			case left($CPUsp,2) = "49"		$CPUsp=500
			case left($CPUsp,2) = "39"		$CPUsp=400
			EndSelect

	$dimms	=Split(WMIQuery("Capacity","Win32_PhysicalMemory"),"|")
		For $a=0 to Ubound($dimms)
			$=Execute("$$dimm$a=val($$dimms[$a]) / 1048576")
			$=Execute("$$memory=val($$Memory)+val($$dimm$a)")
		Next

	$nic=0
	Do
		$ip 	= EnumIPInfo($nic,0)
		$snm	= EnumIPInfo($nic,1)
		$NicDesc= EnumIPInfo($nic,2)
		$mygw	= EnumIPInfo($nic,3)
		$nic=Val($nic)+1
	Until instr($ip,'192.168.22.') OR instr($ip,'192.168.24') OR instr($ip,'192.168.201.') OR Val($nic) > 10
	
	$network = left($ip,instrrev($ip,'.'))

	$Mac	=WMIQuery("MACAddress","Win32_NetworkAdapterConfiguration",,"Description",$NicDesc)
	$Mac	=Join(Split($mac,':'),'')
	$Mac	=Left($mac,InStr($mac,'|')-1)

	$NAITVD      ="HKLM\Software\Network Associates\TVD"
	$vsengine    =$NAITVD+"\Shared Components\VirusScan Engine\4.0.xx"
	$virusScan   =$NAITVD+'\VirusScan'+ iif(keyexist($NAITVD+'\VirusScan Enterprise\CurrentVersion'),' Enterprise\CurrentVersion','')
	$vscandir    =readvalue($virusScan,"szInstallDir")
	$vscaneng    =readvalue($vsengine,"szEngineVer")
	$vsdatdir    =readvalue($vsengine,"szInstallDir")
	$McAfee	     ="HKLM\Software\McAfee"
	if KeyExist($McAfee)
		$avengine    =$McAfee+"\AVEngine"
		$avDP	     =$McAfee+"\DesktopProtection"
		$vscanver    =readvalue($avDP,"szProductVer")
		$vscaneng    =readvalue($avengine,"EngineVersionMajor") + "." + readvalue($avengine,"EngineVersionMinor")
		$vscandat    =readvalue($avengine,"AVDatVersion")
		$vsdatdate   =readvalue($avengine,"AVDatDate")
	else if instr($virusScan,'Enterprise')  
		$vscanver    =readvalue($virusScan,"szProductVer")
		$vscandat    =readvalue($vsengine,"szVirDefVer")
		$vsdatdate   =readvalue($vsengine,"szVirDefDate")
		else
			$vscanver    =readvalue($virusScan,"szCurrentVersionNumber")
			$vscandat    =readvalue($vsengine,"szDatVersion")
			$vsdatdate   =readvalue($vsengine,"szDatDate")
		endif
	endif

	$MSOdir	=readvalue("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\excel.exe","Path")
	$excel	=getfileversion("$MSOdir\excel.exe")
	$MSOVer =split($excel,'.')[0]

	$MSOSPVer = ''

	$assigned = readvalue("HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters","srvcomment")
	if left($assigned,2) = '68'
		$assigned = left(right(join(split(join(split($assigned,' '),''),'-'),''),-2),9)
	endif

	$ini = 0

$cnstring = "DRIVER={SQL Server};SERVER=inventory;UID=Inventory;PWD=kixscript;DATABASE=inv"

$cn = CreateObject("ADODB.Connection")
$cmd= CreateObject("ADODB.Command")
$rs = CreateObject("ADODB.RecordSet")

$cn.connectionstring = $cnstring
$cn.open
$cmd.activeconnection = $cn
$rs.cursortype = 3
$rs.locktype = 3
$rs.activecommand = $cmd

$cmdtxt = "select * from tbl_Main where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd)			;? 'Error = '+@ERROR+' - '+@SERROR
	IF $rs.eof = -1		$rs.addnew	ENDIF 

	$rs.fields.item("SerialNumber").value  = $serNo
	$rs.fields.item("ComputerName").value  = @wksta
	$rs.fields.item("AssignedTo").value    = $assigned
	$rs.fields.item("NetworkID").value     = $network
	$rs.fields.item("IPAddress").value     = $ip
	$rs.fields.item("InvDate").value       = @date
	$rs.fields.item("Version").value       = $InvVer
$rs.update							;? 'Error = '+@ERROR+' - '+@SERROR
;if not @error
	$nul = WriteValue('HKLM\SOFTWARE\Information Technology\SQLInventory','LastRun',@date,REG_SZ)
;endif
$rs.close

$cmdtxt = "select * from dbo._tbl_OSEnv where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd)			;? 'Error = '+@ERROR+' - '+@SERROR
	IF $rs.eof = -1		$rs.addnew	ENDIF 

	$rs.fields.item("SerialNumber").value	= $serNo
	$rs.fields.item("OS").value 		= @ProductType
	$rs.fields.item("OSCSD").value		= @csd
	$rs.fields.item("64bit").value		= @OnWoW64
	$rs.fields.item("AVEngine").value	= $vscanver
	$rs.fields.item("AVDate").value		= $vsdatdate
	$rs.fields.item("MSO").value		= $MSOVer
	$rs.fields.item("MSOSP").value		= $MSOSPVer
$rs.update							? 'Error = '+@ERROR+' - '+@SERROR
$rs.close



$cmdtxt = "select * from dbo._tbl_OrgCodes where OrgCode = '$Asset'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd)			;? 'Error = '+@ERROR+' - '+@SERROR
	$code = IIF($rs.eof = -1,1,0)
$rs.close							;? 'Error = '+@ERROR+' - '+@SERROR



$cmdtxt = "select * from tbl_Computers where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd)			;? 'Error = '+@ERROR+' - '+@SERROR
	IF $rs.eof = -1
		$rs.addnew 

		$rs.fields.item("SerialNumber").value	= $serNo
		if $code = 1
			$rs.fields.item("Tag").value= $asset	
		else
			$rs.fields.item("OrgCode").value= $asset
		endif
		$rs.fields.item("Make").value		= $Make 	
		$rs.fields.item("Model").value		= $Model	
		$rs.fields.item("CPU").value		= $CPUsp
		$rs.fields.item("Memory").value		= $memory
		$rs.fields.item("FirstInventory").value = @date
		$rs.update					;? 'Error = '+@ERROR+' - '+@SERROR
		;if not @error
			$nul = WriteValue('HKLM\SOFTWARE\Information Technology\SQLInventory','FirstRun',@date,REG_SZ)
		;endif
	else
		if $rs.fields.item("Tag").value < '0' and $code = 1
			$rs.fields.item("Tag").value= $asset	
			$rs.update				;? 'Error = '+@ERROR+' - '+@SERROR
		endif

		if $rs.fields.item("OrgCode").value < '0' and $code = 0
			$rs.fields.item("OrgCode").value= $asset
			$rs.update				;? 'Error = '+@ERROR+' - '+@SERROR
		endif

		if $rs.fields.item("FirstInventory").value < '0'
			$rs.fields.item("FirstInventory").value = @date
			$rs.update				;? 'Error = '+@ERROR+' - '+@SERROR
		endif
	ENDIF
$rs.close




$cmdtxt = "Delete from dbo._tbl_Software where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt 
$rs.Open($cmd) 			;? 'Error = '+@ERROR+' - '+@SERROR
$rs.close 			;? 'Error = '+@ERROR+' - '+@SERROR

$cmdtxt = "select * from dbo._tbl_Software where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd)			;? 'Error = '+@ERROR+' - '+@SERROR

$Index = 0	$err = 0	$key = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Do
	$SubKey = ENUMKEY($Key, $Index)
	If @ERROR = 0
		if not left($subkey,'2') = 'KB'
			$DisplayName 	= Readvalue($key+$subKey,'DisplayName')
			$DisplayVersion = Readvalue($key+$subKey,'DisplayVersion')
			$InstallDate 	= Readvalue($key+$subKey,'InstallDate')
			$InstallLocation= Readvalue($key+$subKey,'InstallLocation')
			$Publisher 	= Readvalue($key+$subKey,'Publisher')

			if not $DisplayName + $DisplayVersion + $InstallDate + $InstallLocation + $Publisher < 'a'	
				$rs.addnew
				$rs.fields.item("SerialNumber").value		= $Serno 
				$rs.fields.item("RegKeyName").value		= $SubKey 
				$rs.fields.item("DisplayName").value		= $DisplayName	
				$rs.fields.item("DisplayVersion").value		= $DisplayVersion	
				$rs.fields.item("InstallDate").value		= $InstallDate
				$rs.fields.item("InstallLocation").value 	= $InstallLocation
				$rs.fields.item("Publisher").value		= $Publisher
				$rs.fields.item("InvDate").value      		= @date
				$rs.update
			endif
		endif
		$Index = $Index + 1
	else
		$err = 1
	Endif
Until $err

$rs.close



Edited by Radimus (2009-02-25 10:45 PM)
_________________________
How to ask questions the smart way <-----------> Before you ask