#71771 - 2002-11-23 01:30 AM
Get Software Inventory and System/User Information
|
NTDOC
Administrator
   
Registered: 2000-07-28
Posts: 11625
Loc: CA
|
This is a modified script of the post here:
My Computer Info - for Help Desk use
It has been converted to write to a log file.
Other posts that relate to this posting: Need a BIG favor...How do I make this script work?
How Do I Sort the contents of a file alphabetically?
This script should include quite a bit of information about the user and the system as well as a listing of the installed software.
No Lonkero I'm not going to re-write it to be "SOLID CODE"... hehehe LOL
code:
; *** File Name: GetInventory.kix *** v1.1 ; *** Date Created: 2002-11-21 by Ron Lewis ; *** Last Date Modified: 2002-11-22 16:05 PST - By Ron Lewis ; *** Comments: This script writes all gathered information to a log ; *** file named after the system name ; *** that is being queried. ; *** Modified from the posting on KiXtart.org for Jason { NuclearKitten } ; *** http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=2;t=003795#00000 ; *** http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=1;t=006205 ; *** MODIFIED to add list of installed software from this post: ; *** http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=005642
BREAK On $IPaddr = EnumIPinfo(0,0) if $IPaddr = "0.0.0.0" or $IPaddr = "" $IPinfo = GetIPinfo() $IPaddr = $IPinfo[0] $SNmask = $IPinfo[1] $Gateway = $IPinfo[2] else $SNmask = EnumIPinfo(0,1) $Gateway = EnumIPinfo(0,3) endif
IF @INWIN=2 $syscomment=READVALUE("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP", "Comment") ELSE $syscomment=READVALUE("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer \Parameters","srvcomment") ENDIF $HKLMAppPaths = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" ; CheckIE variables DIM $RC1, $RC2, $RC3, $TmpLen1, $TmpLen2, $TmpLen3 DIM $IEBuild, $IEFullVer, $IEMajor, $IEMinor, $IESubBd, $IEVer, $IECustom, $IEName
While @error = 0 $app = enumkey("$HKLMAppPaths\",$index) $index = $index + 1 Select case $app = "excel.exe" $path = readvalue("$HKLMAppPaths\$app","path") $Excelver = getfileversion("$path\$app","Productversion") case $app = "winword.exe" $path = readvalue("$HKLMAppPaths\$app","path") $Wordver = getfileversion("$path\$app","Productversion") case $app = "powerpnt.exe" $path = readvalue("$HKLMAppPaths\$app","path") $PowerPointver = getfileversion("$path\$app","Productversion") case $app = "msaccess.exe" $path = readvalue("$HKLMAppPaths\$app","path") $Accessver = getfileversion("$path\$app","Productversion") case $app = "mspub.exe" $path = readvalue("$HKLMAppPaths\$app","path") $Publisherver = getfileversion("$path\$app","Productversion") case $app = "winproj.exe" $path = readvalue("$HKLMAppPaths\$app","path") $Projectver = getfileversion("$path\$app","Productversion") case $app = "visio32.exe" $path = readvalue("$HKLMAppPaths\$app","path") $Visiover = getfileversion("$path\$app","Productversion") case $app = "outlook.exe" $path = readvalue("$HKLMAppPaths\$app","path") $Outlookver = getfileversion("$path\$app","Productversion") endselect loop
$Ex=$Excelver $Wo=$Wordver $Po=$PowerPointver $Ac=$Accessver $Pu=$Publisherver $Pr=$Projectver $Vi=$Visiover $Ou=$Outlookver
;Access=$Ac ;Excel=$Ex ;Outlook=$Ou ;PowerPoint=$Po ;Project=$Pr ;Publisher=$Pu ;Visio=$Vi ;Word=$Wo ;Internet Explorer version=$IEFullVer ;Internet Explorer Name=$IEName
GoSub "CheckIE"
$DiskSpace = GetDiskSpace("C:\") /1024 $RequiredSpace="200" IF $DiskSpace < $RequiredSpace $Low="WARNING! - WARNING! : Disk space on your C: drive is low" Else $Low="" Endif $DaysLeft=365-@ydayno $rc="" $MyCPU="" $MySpeed=VAL(@MHZ) $Mem = MemorySize() If $MySpeed < 1001 $MySpeed=("$MySpeed Mhz") Else $MySpeed=("$MySpeed Ghz") EndIf IF @INWIN=1 ; Windows NT systems $MyCPU="CPU : "+@CPU +" "+$MySpeed $IsAdmin="" SELECT CASE INGROUP("\\@WKSTA\Administrators") = 1 $IsAdmin="Yes" Case 1 $IsAdmin="No" ENDSELECT $rc="Administrator : "+$IsAdmin ENDIF
$SMS_ID=ReadValue("HKLM\SOFTWARE\Microsoft\SMS\Client\configuration\Client Properties\", "SMS Unique Identifier") $pass_age=60-@pwage
GoTo LOGGING
:CheckIE ; REM ** Confirm Internet Explorer installed on system (See MS TechNet article Q164539) ; REM ** Format of IE Version numbers: x.xx.xxxx.xxxx (Major.Minor.Build.SubBuild) $RC1 = READVALUE ("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer", "Build") ; REM ** IE3 onward (s/b build only, or xxxxx.xxxx) $RC2 = READVALUE ("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer", "Version") ; REM ** IE4 or later only (s/b xx.xx.xxxx.xxxx) $RC3 = READVALUE ("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer", "IVer") ; REM ** IE3 only (s/b xxx) $IECustom = READVALUE ("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer", "CustomizedVersion") ; REM ** IE4 or later only: ;(IC = Internet Content Provider IS = Internet Service Provider CO = Corporate Administrator ) $TmpLen1 = LEN ($RC1) $TmpLen2 = LEN ($RC2) $TmpLen3 = LEN ($RC3)
SELECT CASE ($TmpLen1 = 5) AND (SUBSTR ($RC2, 4, 1) = ".") ; REM ** IE6 (WinXP) - MS error w/IE 6 where minor id is single charcter, ; and build value only 5 characters $IEMajor = SUBSTR ($RC2, 1, 1) $IEMinor = SUBSTR ($RC2, 3, 1) + "0" $IEBuild = SUBSTR ($RC2, 5, 4) $IESubBd = SUBSTR ($RC2, 10, $TmpLen2-9) $IEFullVer = $IEMajor + "." + $IEMinor + "." + $IEBuild + "." + $IESubBd CASE ($TmpLen1 = 10) AND (SUBSTR ($RC2, 4, 1) = ".") ; REM ** IE6 (Win2K) - MS error w/IE 6 where minor id is single charcter $IEMajor = SUBSTR ($RC2, 1, 1) $IEMinor = SUBSTR ($RC2, 3, 1) + "0" $IEBuild = SUBSTR ($RC2, 5, 4) $IESubBd = SUBSTR ($RC2, 10, $TmpLen2-9) $IEFullVer = $IEMajor + "." + $IEMinor + "." + $IEBuild + "." + $IESubBd CASE ($TmpLen1 = 14) OR ($TmpLen2 >= 11) ; REM ** IE5/IE4 - 14 is MS error w/IE 5.01 SP1 for Win2K, >=11 for various IE4, ; 5 versions not 14-character $IEFullVer = $RC2 $IEMajor = SUBSTR ($RC2, 1, 1) $IEMinor = SUBSTR ($RC2, 3, 2) $IEBuild = SUBSTR ($RC2, 6, 4) $IESubBd = SUBSTR ($RC2, 11, $TmpLen2-9) CASE ($TmpLen1 >= 3) AND ($RC3 = "103") ; REM ** IE3 - the build number only $IEMajor = "4" $IEMinor = "70" $IEBuild = "$RC1" $IESubBd = "" $IEFullVer = $IEMajor + "." + $IEMinor + "." + $IEBuild CASE (1) $Status = $Skip $wri = WRITELINE (1, "Verified IE not installed." + $CR) RETURN ENDSELECT
; REM ** Determine exact version installed on system, (See MS TechNet article Q164539) Select CASE ($IEFullVer >= "6.00.2600.0000") $IEVer = "6.00" $IEName="Internet Explorer 6" CASE ($IEFullVer >= "6.00.2479.0006") $IEVer = "6.00" $IEName="Internet Explorer 6 Public Preview (Beta) Refresh" CASE ($IEFullVer >= "6.00.2462.0000") $IEVer = "6.00" $IEName="Internet Explorer 6 Public Preview (Beta)" CASE ($IEFullVer >= "5.50.4807.2300") $IEVer = "5.50 SP2" $IEName="Internet Explorer 5.5 Service Pack 2" CASE ($IEFullVer >= "5.50.4522.1800") $IEVer = "5.50 SP1" $IEName="Internet Explorer 5.5 Service Pack 1" CASE ($IEFullVer >= "5.50.4308.2900") $IEVer = "5.50" $IEName="Internet Explorer 5.5 Advanced Security Privacy Beta" CASE ($IEFullVer >= "5.50.4134.0600") $IEVer = "5.50" $IEName="Internet Explorer 5.5" CASE ($IEFullVer >= "5.50.4134.0100") $IEVer = "5.50" $IEName="Internet Explorer 5.5 (Windows Me - 4.90.3000)" CASE ($IEFullVer >= "5.50.4030.2400") $IEVer = "5.50" $IEName="Internet Explorer 5.5 & Internet Tools Beta" CASE ($IEFullVer >= "5.50.3825.1300") $IEVer = "5.50" $IEName="Internet Explorer 5.5 Developer Preview (Beta)" CASE ($IEFullVer >= "5.00.3315.1000") $IEVer = "5.01 SP2" $IEName="Internet Explorer 5.01 SP2 (Windows 2000)" CASE ($IEFullVer >= "5.00.3314.2101") $IEVer = "5.01 SP2" $IEName="Internet Explorer 5.01 SP2 (Windows 95/98 and Windows NT 4.0)" CASE ($IEFullVer >= "5.00.3105.0106") $IEVer = "5.01 SP1" $IEName="Internet Explorer 5.01 SP1 (Windows 95/98 and Windows NT 4.0)" CASE ($IEFullVer >= "5.00.3103.1000") $IEVer = "5.01 SP1" $IEName="Internet Explorer 5.01 SP1 (Windows 2000)" CASE ($IEFullVer >= "5.00.2920.0000") $IEVer = "5.01" $IEName="Internet Explorer 5.01 (Windows 2000, build 5.00.2195)" CASE ($IEFullVer >= "5.00.2919.6307") $IEVer = "5.01" $IEName="Internet Explorer 5.01 (Also included with Office 2000 SR-1)" CASE ($IEFullVer >= "5.00.2919.3800") $IEVer = "5.01" $IEName="Internet Explorer 5.01 (Windows 2000 RC2, build 5.00.2128)" CASE ($IEFullVer >= "5.00.2919.800") $IEVer = "5.01" $IEName="Internet Explorer 5.01 (Windows 2000 RC1, build 5.00.2072)" CASE ($IEFullVer >= "5.00.2516.1900") $IEVer = "5.01" $IEName="Internet Explorer 5.01 (Windows 2000 Beta 3, build 5.00.2031)" CASE ($IEFullVer >= "5.00.2614.3500") $IEVer = "5.00" $IEName="Internet Explorer 5 (Windows 98 Second Edition)" CASE ($IEFullVer >= "5.00.2314.1003") $IEVer = "5.00" $IEName="Internet Explorer 5 (Office 2000)" CASE ($IEFullVer >= "5.00.2014.0216") $IEVer = "5.00" $IEName="Internet Explorer 5" CASE ($IEFullVer >= "5.00.0910.1309") $IEVer = "5.00" $IEName="Internet Explorer 5 Beta (Beta 2)" CASE ($IEFullVer >= "5.00.0518.10") $IEVer = "5.00" $IEName="Internet Explorer 5 Developer Preview (Beta 1)" CASE ($IEFullVer >= "4.72.3612.1713") $IEVer = "4.01 SP2" $IEName="Internet Explorer 4.01 Service Pack 2 (SP2)" CASE ($IEFullVer >= "4.72.3110.8") $IEVer = "4.01 SP1" $IEName="Internet Explorer 4.01 Service Pack 1 (SP1)" CASE ($IEFullVer >= "4.72.2106.8") $IEVer = "4.01" $IEName="Internet Explorer 4.01" CASE ($IEFullVer >= "4.71.1712.6") $IEVer = "4.00" $IEName="Internet Explorer 4.0" CASE ($IEFullVer >= "4.71.1008.3") $IEVer = "4.00" $IEName="Internet Explorer 4.0 Platform Preview 2.0 (PP2)" CASE ($IEFullVer >= "4.71.544") $IEVer = "4.00" $IEName="Internet Explorer 4.0 Platform Preview 1.0 (PP1)" CASE ($IEFullVer >= "4.70.1300") $IEVer = "3.02" $IEName="Internet Explorer 3.02 and 3.02a" CASE ($IEFullVer >= "4.70.1215") $IEVer = "3.01" $IEName="Internet Explorer 3.01" CASE ($IEFullVer >= "4.70.1158") $IEVer = "3.00" $IEName="Internet Explorer 3.0 (OSR2)" CASE ($IEFullVer >= "4.70.1155") $IEVer = "3.00" $IEName="Internet Explorer 3.0" CASE ($IEFullVer >= "4.40.520") $IEVer = "2.00" $IEName="Internet Explorer 2.0" CASE ($IEFullVer >= "4.40.308") $IEVer = "1.00" $IEName="Internet Explorer 1.0 (Plus!)" ENDSELECT RETURN
Function GetIPinfo() dim $IPinfo[3], $file, $RC, $Line, $pos, $loop IF OPEN(1,"%TEMP%\"+@WKSTA+".LOG", 5)= 0 $out = WriteLine(1, "Gathering IP info using GetIPinfo()") $x = CLOSE(1) ENDIF $file = "%TEMP%\"+@WKSTA+".LOG" if @inwin=1 shell "%comspec% /c ipconfig >$file" else shell "winipcfg /batch $file" endif $RC = Open(5, "$file", 2) if $RC = 0 $Line=Readline(5) $loop = 1 WHILE (@ERROR = 0 and $loop = 1) if instr($Line, ". . . : ") > 0 WHILE (@ERROR = 0 and $loop = 1) select case instr($Line, "IP Address") > 0 $pos = instr($Line, ":") $IPinfo[0] = substr($Line, $pos+2, 15) case instr($Line, "Subnet Mask") > 0 $IPinfo[1] = substr($Line, $pos+2, 15) case instr($Line, "Default Gateway") > 0 $IPinfo[2] = substr($Line, $pos+2, 15) if $IPinfo[2] <> "0.0.0.0" and $IPinfo[2] <> "" $loop = 0 endif endselect $Line=ReadLine(5) LOOP endif $Line=ReadLine(5) LOOP $RC=Close(5) endif $GetIPinfo = $IPinfo Endfunction
:LOGGING ; *** Write Information to Log *** $aStart=@ticks $software = combsort(getinstalledsoftware) $outfile = "C:\"+@WKSTA+".TXT" If exist($outfile) del $outfile endif $nul = open(1, $outfile,5) $nul = WriteLine(1,"Start time of Script "+$aStart+Chr(13)+Chr(10)) $nul = writeline(1,@DATE+"*"+@TIME+"*"+@USERID+"*"+$syscomment+"*"+@FULLNAME+"*"+@lserver+"*" +@HOMEDIR+"*"+@HOSTNAME+"*"+@Wksta+"*"+@Domain+"*"+$IPaddr+"*"+$SNmask+"*"+$Gateway+"*"+ $IsAdmin+"*"+$Mem+"*"+$MyCPU+"*"+$Ac+"*"+$Ex+"*"+$Ou+ "*"+$Po+"*"+$Pr+"*"+$Pu+"*"+$Vi+"*"+$Wo+"*"+$IEFullVer+"*"+$IEName+"*"+Chr(13)+Chr(10)) For each $item in $software $nul = writeline(1,$item+@crlf) next $aStop=@ticks $TimeDiff=$aStop-$aStart $nul = WriteLine(1,"Ending time of Script "+$aStop+Chr(13)+Chr(10)) $nul = WriteLine(1,"Time it took to run script "+$TimeDiff+Chr(13)+Chr(10)) $nul = close(1)
Return
function GetInstalledsoftware Dim $softwarekey, $index dim $temparray[10] $SoftwareKey = enumkey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Uninstall\",$Index) while not @error $DisplayName = readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Uninstall\$SoftwareKey","displayname") $DisplayVersion = readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Uninstall\$SoftwareKey","DisplayVersion") If $DisplayName if $count > ubound($temparray) redim preserve $temparray[ubound($temparray)+10] endif $temparray[$count] = $DisplayName +"~"+ $DisplayVersion $count = $count + 1 endif $Index = $Index + 1 $SoftwareKey = enumkey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\",$Index) loop if $count > 0 redim preserve $temparray[$count-1] else $temparray = "" endif $getinstalledsoftware = $temparray endfunction
Function CombSort($v, Optional $o) Dim $i,$j,$m,$s,$g $n=UBound($v) $g = $n If $g While $g > 1 Or Not $s $g=($g*1000)/1279 If $g < 1 $g = 1 EndIf $s=1 For $i = 0 To $n-$g $j=$i+$g If ($v[$i] > $v[$j] And Not $o) Or ($v[$i] < $v[$j] And $o) $m = $v[$i] $v[$i] = $v[$j] $v[$j] = $m $s=0 EndIf Next Loop $CombSort = $v Else $CombSort = 0 EndIf EndFunction
[ 23. November 2002, 03:37: Message edited by: NTDOC ]
|
Top
|
|
|
|
#71773 - 2002-11-23 01:35 AM
Re: Get Software Inventory and System/User Information
|
NTDOC
Administrator
   
Registered: 2000-07-28
Posts: 11625
Loc: CA
|
Cause it's the week-end.
If too many problems or too many whinners I'll think about it.
|
Top
|
|
|
|
#71775 - 2002-11-23 01:42 AM
Re: Get Software Inventory and System/User Information
|
NTDOC
Administrator
   
Registered: 2000-07-28
Posts: 11625
Loc: CA
|
No, it means Lonkero beat me up once because I did not use all the correct variable names, etc...
I am bad at not breaking lines...
|
Top
|
|
|
|
#71782 - 2002-11-23 03:26 AM
Re: Get Software Inventory and System/User Information
|
NTDOC
Administrator
   
Registered: 2000-07-28
Posts: 11625
Loc: CA
|
Ok Ok.. back to my game. You still need 1024x768
|
Top
|
|
|
|
#71785 - 2002-11-23 03:33 AM
Re: Get Software Inventory and System/User Information
|
NTDOC
Administrator
   
Registered: 2000-07-28
Posts: 11625
Loc: CA
|
GET A LIFE....
|
Top
|
|
|
|
#71787 - 2002-11-23 03:38 AM
Re: Get Software Inventory and System/User Information
|
NTDOC
Administrator
   
Registered: 2000-07-28
Posts: 11625
Loc: CA
|
Fits in my 1024 Window.
Not sure code is any where near as readable now...
|
Top
|
|
|
|
Moderator: Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart
|
0 registered
and 323 anonymous users online.
|
|
|