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