mac_shinobi Posted November 6, 2012 Posted November 6, 2012 Currently have the below script const HKEY_CURRENT_USER = &H80000001 const HKEY_LOCAL_MACHINE = &H80000002 Const ForReading = 1, ForWriting = 2, ForAppending = 8 strComputer = "." Set StdOut = WScript.StdOut Dim username, Model, serial, asset, hdd, manuhdd, manu Dim colIPResults, objFile, objFSO, objNIC, objWMI, objWSHNetwork, strAddresses, strIPAddress, strWQL, strComp, osVer Dim strRAM dim filesys, filetxt dim newfolder Dim usbPath Dim spVer Set objNetwork = CreateObject("Wscript.Network") Set filesys = CreateObject("Scripting.FileSystemObject") username = objNetwork.username strComputer = objNetwork.ComputerName usbPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "") Sub DestroyObjects() If IsObject(objWMI) Then Set objWMI = Nothing If IsObject(objWSHNetwork) Then Set objWSHNetwork = Nothing End Sub Set objWSHNetwork = CreateObject("WScript.Network") Set objWMI = GetObject("WinMGMTS:root\cimv2") strWQL = "SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'True'" Set colIPResults = objWMI.ExecQuery(strWQL) For Each objNIC In colIPResults For Each strIPAddress in objNIC.IPAddress If strAddresses = "" Then strAddresses = strIPAddress Else strAddresses = strAddresses End If Next Next If strAddresses ="0.0.0.0" Or strAddresses ="" or strAddresses = "undefined" Then strAddresses = "No Connection Detected or invalid ip address" Else strAddresses = strAddresses End If DestroyObjects() Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) For Each Item In colItems manu = Item.Manufacturer model = Item.Model Next Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) totalMemory = 0 For Each item In colItems totalMemory = totalMemory + item.Capacity / (1024^2) Next strRam = FormatNumber((totalMemory / 1024), 2) & " Gb" Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS") For Each objItem in colItems serial = objItem.SerialNumber Next Set colItems = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure") For Each objItem in colItems If Len(objItem.SMBIOSAssetTag) <= 0 Then asset = "N/A" Else asset = objItem.SMBIOSAssetTag End If Next Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "HARDWARE\DESCRIPTION\System\CentralProcessor\0" strValue = "ProcessorNameString" objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValue,strScriptStatus Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery("select * from Win32_DiskDrive where Name like '%PHYSICALDRIVE0%'") For Each objDisk in colDisks hdd = ConvertSize(objDisk.Size) manuhdd = Int(objDisk.Size /(1000000000)) & " GB" Next Set oWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set QueryWMI = oWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem") For Each oItem In QueryWMI spVer = oItem.Caption & " with Service Pack " & oItem.ServicePackMajorVersion osVer = oItem.Version Next Set filetxt = filesys.OpenTextFile(usbPath & "\" & ucase(username) & " - " & Trim(strComputer) & ".htm" , 2, True) 'filetxt.WriteLine "Username,Manufacturer,Serial Number,Model,Computer Name,RAM,HDD,Asset Tag,Processor" 'filetxt.WriteLine ucase(username) & "," & manu & "," & serial & "," & model & "," & strComputer & "," & strRAM & "," & hdd & "( " & manuhdd & " )" & "," & asset & "," & strScriptStatus filetxt.WriteLine "Computer Spec for : " & strComputer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Username" filetxt.WriteLine "" & ucase(username) & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Operating System & Service Pack Level" filetxt.WriteLine "" & spVer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Operating System Version" filetxt.WriteLine "" & osVer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Manufacturer" filetxt.WriteLine "" & manu & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Serial Number" filetxt.WriteLine "" & serial & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Model" filetxt.WriteLine "" & model & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Computer Name" filetxt.WriteLine "" & strComputer & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "I.P Address" filetxt.WriteLine "" & strAddresses & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "RAM in Gb" filetxt.WriteLine "" & strRAM & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Actual HDD Capacity" filetxt.WriteLine "" & HDD & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Manufacturer HDD Capacity" filetxt.WriteLine "" & manuhdd & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Asset Tag" filetxt.WriteLine "" & asset & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "Processor" filetxt.WriteLine "" & Trim(strScriptStatus) & "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.WriteLine "" filetxt.Close msgbox ucase(username) & vbcrlf & spVer & vbcrlf & osVer & vbcrlf & manu & vbcrlf & model & vbcrlf & serial & vbcrlf & asset & vbcrlf & vbcrlf & strComputer & vbcrlf & strAddresses & vbcrlf & strScriptStatus & vbcrlf & strRAM & vbcrlf & hdd & "( " & manuhdd & " )" wscript.sleep 1000 Function ConvertSize(Size) Do While InStr(Size,",") 'Remove commas from size CommaLocate = InStr(Size,",") Size = Mid(Size,1,CommaLocate - 1) & _ Mid(Size,CommaLocate + 1,Len(Size) - CommaLocate) Loop Suffix = " Bytes" If Size >= 1024 Then suffix = " KB" If Size >= 1048576 Then suffix = " MB" If Size >= 1073741824 Then suffix = " GB" If Size >= 1099511627776 Then suffix = " TB" Select Case Suffix Case " KB" Size = Round(Size / 1024, 1) Case " MB" Size = Round(Size / 1048576, 1) Case " GB" Size = Round(Size / 1073741824, 1) Case " TB" Size = Round(Size / 1099511627776, 1) End Select ConvertSize = Size & Suffix End Function Set objMemory = Nothing Set objWMIService = Nothing @Steve21 was helping me with this via email so need to re do the html side - just not got around to it yet. Just wanted to neaten the code up as I think could be a lot better. 1. Need help with the model more so with Lenovo computers ( laptops and desktops ) currently it just gets the model number instead of the actual model for example the T420 laptops we have currently only shows a model number of 4236-CP7 but I can't seem to get it to show T420 ( 4236CP7 ). The only way I seem to be able to translate model numbers into an actual model is via the downloads section of the website. 2. Tidy code up to make it into subs or functions and the likes 3. Make the output html file neater ie css or something of the likes Thanks
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now