Here goes. The SNIP is just some more registry reading. I figured that this gives a good idea on how the program works without all of the extra stuff. You will have to assume that the writeln has the values gathered by the program.
Code:
BREAK ON
OPEN (1,"C:\Reports\AllSERVERS4b.TXT",2)
OPEN (2,"c:\Reports\ServPatch4b.txt",5)
WriteLine( 2 ,"SRVNAME#OSVer#IEVer#IEMinor#MSJVM#MDACVer#BKExec#MSSQLVER#MSSQLVER2#815495
#NET#VScanProdVer#VScanEngine#VScanVirDef#ePO#Q327194#Q816093#KB823559
#KB823182#KB826232#KB828035#KB825119#KB824141#KB824105#KB828749#KB832483
#KB835732#KB837001#KB823353#KB842526#KB841872#KB841873#KB840315#KB824151
#KB841533#KB840987#KB883935#KB841356#KB885836#KB873339#KB885835#KB890175
#KB871250#KB885834#KB885250#KB873333#KB891781#KB888113#KB893086#KB892944
#KB890859#KB893066#KB893066a#KB890923" + Chr(13) + Chr(10) )
:NEXTSRV
$SRVNAME = ReadLine(1)
IF $SRVNAME = ""
Goto ENDOFFILE
Endif
shell '%comspec% /c ping $SRVNAME -n 1 | find /I "Request timed out."'
IF @ERROR = 0
WriteLine(2,"$SRVNAME#No Reply" + Chr(13) + Chr(10) )
; WriteLine(3,"$SRVNAME,No Reply" + Chr(13) + Chr(10) )
GOTO NEXTSRV
ENDIF
shell '%comspec% /c ping $SRVNAME -n 1 -w 250 | find /I "Request timed out."'
IF @ERROR = 0
WriteLine(2,"$SRVNAME#Unreachable" + Chr(13) + Chr(10) )
; WriteLine(3,"$SRVNAME,Unreachable" + Chr(13) + Chr(10) )
GOTO NEXTSRV
ENDIF
shell '%comspec% /c ping $SRVNAME -n 1 | find /I "TTL expired"'
IF @ERROR = 0
WriteLine(2,"$SRVNAME#No Reply" + Chr(13) + Chr(10) )
; WriteLine(3,"$SRVNAME,No Reply" + Chr(13) + Chr(10) )
GOTO NEXTSRV
ENDIF
shell '%comspec% /c ping $SRVNAME -n 1 | find /I "Unknown host"'
IF @ERROR = 0
WriteLine(2,"$SRVNAME#Unknown Host" + Chr(13) + Chr(10) )
; WriteLine(3,"$SRVNAME,Unknown Host" + Chr(13) + Chr(10) )
GOTO NEXTSRV
ENDIF
;Server O/S Version
;Current Version
$OSVer = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\windows NT\CurrentVersion",CurrentVersion)
;Internet Explorer Information
;Version
$IEVer = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\Internet Explorer","Version")
;Patches
$IEMinor = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\windows\CurrentVersion\Internet Settings",MinorVersion)
;MS Java VM
$MSJVM = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{08B0E5C0-4FCB-11CF-AAA5-00401C608500}",Version)
;MDAC Information Version
$MDACVer = READVALUE("\\$SRVNAME\HKLM\SOftware\Microsoft\DataAccess","FullInstallVer")
;BackupExec Version
$BKExec = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Veritas\Backup Exec\Install","Build Major")
;SQL
$MSSQLVER = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion",CurrentVersion)
$MSSQLVER2 = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion",CSDVersion)
$815495 = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\MSSQLServer\HotFixes\0818",DateInstalled)
IF $815495 = ""
$815495 = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\MSSQLServer\HotFixes\1094",DateInstalled)
ENDIF
;DotNet
$NET = READVALUE("\\$SRVNAME\HKLM\SOFTWARE\Microsoft\.NETFramework",InstallRoot)
*** SNIP ***
WriteLine( 2 ,"$SRVNAME#$OSVer#$IEVer#$IEMinor#$MSJVM#$MDACVer#$BKExec#$MSSQLVER
#$MSSQLVER2#$815495#$NET#$VScanProdVer#$VScanEngine#$VScanVirDef#$ePO#$Q327194
#$Q816093#$KB823559#$KB823182#$KB826232#$KB828035#$KB825119#$KB824141
#$KB824105#$KB828749#$KB832483#$KB835732#$KB837001#$KB823353#$KB842526
#$KB841872#$KB841873#$KB840315#$KB824151#$KB841533#$KB840987#$KB883935
#$KB841356#$KB885836#$KB873339#$KB885835#$KB890175#$KB871250#$KB885834
#$KB885250#$KB873333#$KB891781#$KB888113#$KB893086#$KB892944#$KB890859
#$KB893066#$KB893066a#$KB890923" + Chr(13) + Chr(10) )
GOTO NEXTSRV
:NotFound
WriteLine(2,"$SRVNAME#NOTFound" + Chr(13) + Chr(10) )
GOTO NEXTSRV
:ENDOFFILE
CLOSE(2)
CLOSE(1)
MESSAGEBOX ("Done! You can open up ServPatch4b.TXT from your desktop in Excel. ", "Server Patch Status Query is Complete", 64)