#192471 - 2009-02-24 02:45 PM
Hardware inventory
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
Hi guys,
I am after a script which tells me the following on each users system :-
- logged on users - make/model/serial number of users system
I also want this info to be written to a file. Please assist.
Many thanks
Saj.
|
Top
|
|
|
|
#192478 - 2009-02-24 04:15 PM
Re: Hardware inventory
[Re: Glenn Barnas]
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
I am new kixtart, have got a copy of your WMISysInfo script. Do I need to put in a host name anywhere to run this script?
|
Top
|
|
|
|
#192483 - 2009-02-24 05:01 PM
Re: Hardware inventory
[Re: Saj]
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
The WMISysinfo script produces alot of info, is there anyway I can just run a simple script to get the info that I have requested above ?
Thanks
Saj
|
Top
|
|
|
|
#192509 - 2009-02-25 10:31 AM
Re: Hardware inventory
[Re: Mart]
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
Thanks for that script Mart. That's exactly what I need. I just need the results to be stored in a text file or DB. Can you tell me how I can do that or provide the script.
Many thanks
Saj
|
Top
|
|
|
|
#192512 - 2009-02-25 11:30 AM
Re: Hardware inventory
[Re: Mart]
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
Am using the following command
RedirectOutput("hardware.log") = 0 ENDIF
But then it just creates a hardware.log file with this in it Opened 'hardware.log' at 10:17:42
I need the screen output to go to this log file preferable with the users name as the filename.
Any help appreciated.
|
Top
|
|
|
|
#192516 - 2009-02-25 12:00 PM
Re: Hardware inventory
[Re: Lonkero]
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
This is the script that I am using :-
RedirectOutput("hardware.txt") = 0 $wmiColl1 = GetObject("WinMgmts:root/cimv2").ExecQuery("Select * FROM Win32_ComputerSystem ") $wmiColl2 = GetObject("WinMgmts:root/cimv2").ExecQuery("Select * FROM Win32_BIOS ")
For Each $wmiObj in $wmiColl1 ? "Manufacturer: " $wmiObj.Manufacturer ? "Model: " $wmiObj.Model ? "Currently logged on user: " $wmiObj.UserName Next
For Each $wmiObj in $wmiColl2 ? "Service tag:" Trim($wmiObj.SerialNumber) Next
Sleep 3
Is this ok ?
|
Top
|
|
|
|
#192518 - 2009-02-25 01:58 PM
Re: Hardware inventory
[Re: Mart]
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
Thanks Mart, your a star.
One more thing the script creates the file, but the logged on username does not show up, it's blank. This script will run upon logon, so ideally I want a separate file for each person who logs on with this info and the name of the file must be the users name.
Cheers
|
Top
|
|
|
|
#192524 - 2009-02-25 03:31 PM
Re: Hardware inventory
[Re: Gargoyle]
|
Saj
Fresh Scripter
Registered: 2009-02-24
Posts: 8
Loc: United Kingdom
|
Thanks Gargoyle. That works a treat.
|
Top
|
|
|
|
#192527 - 2009-02-25 08:45 PM
Re: Hardware inventory
[Re: Lonkero]
|
Radimus
Moderator
Registered: 2000-01-06
Posts: 5187
Loc: Tampa, FL
|
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)
|
Top
|
|
|
|
Moderator: Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart
|
1 registered
(Allen)
and 466 anonymous users online.
|
|
|