Go back to previous topic
Forum nameHigh-Tech
Topic subjectI really, really like this script (for system auditing) *Nerd stuff*
Topic URLhttp://board.okayplayer.com/okp.php?az=show_topic&forum=11&topic_id=66927
66927, I really, really like this script (for system auditing) *Nerd stuff*
Posted by eunos, Fri Jun-02-06 11:27 PM
Hopefully at least one of ya'll will find a use for it. Copy & Paste into notepad then change it to ".vbs" at the end (if you are thinking about using it you probably know that already though) :

'Must have admin privillages to run the script
' A VBS Script using WMI to gather system information
' Note this script requires WSCRIPT v 5.6 To be installed On the PC upon which it Is run


Dim GetCurrentDate ,filext ,oshell

Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "net time \\DCname /set /y"
' change DCname to your domain controller name if you want to syncronize your time with your DC
Set oShell = Nothing


strComputer = "."
const HKEY_LOCAL_MACHINE = &H80000002
On Error Resume Next

' ************************************
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
For Each objItem In colItems
cComputerName = objItem.Caption
cloginname = objItem.UserName
cManufacturer = objItem.Manufacturer
cModel = objItem.Model
Next

Set WshNetwork = WScript.CreateObject("WScript.Network")
cUserName = WshNetwork.UserName
Set UserObj = GetObject("WinNT://domain/"&WshNetwork.UserName)
' change domain to your domain name w/o .com
strDisplayName = UserObj.Get("FullName")
strlastlogin = UserObj.Get("LastLogin")
pos = instrrev(cloginname,"\",-1)
clname1 = mid(cloginname,pos+1 ,len(cloginname))

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("process")
windir = WshSysEnv("WINDIR")

Set objFSO = CreateObject("Scripting.FileSystemObject")
If not objFSO.FolderExists(windir & "\sharefolder") Then
' change \sharedfolder to any name , this is where the report will be save
Set objFolder = objFSO.CreateFolder(windir & "\sharefolder")
End If


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile(windir & "\sharefolder\" & cComputerName & ".rpt", True)
objTextFile.WriteLine "Date: " & Date & vbTab & Time
objTextFile.WriteLine "User Name: " & clname1
Set UserObj = GetObject("WinNT://domainname/"&clname1)
'change domainname to your domain name

strDisplayName = UserObj.Get("FullName")
objTextFile.WriteLine "Full Name: " & strDisplayName
' objTextFile.WriteLine "Employee Number: "
objTextFile.WriteLine "Computer Name: " & cComputerName

'************************
Set objWMIService = GetObject("winmgmts:" & "!\\" & strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objAdapter in colAdapters
objTextFile.WriteLine "IP address: " & objAdapter.IPAddress(i)
objTextFile.WriteLine "DNS Domain: " & objAdapter.DNSDomain
Next

'****************
' Get OS Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
For Each objItem In colItems
cOSs = objItem.Name
pos = InStr(1, cOsS,"|",1)
cOS1 = left(cOSs,pos-1)
objTextFile.WriteLine "Operating System: " & cOS1 & " " & objItem.CSDVersion
TotalVisibleMemory = FormatNumber(objItem.TotalVisibleMemorySize/1024,0)

Next

'****************
objTextFile.WriteLine "Manufacturer: " & cManufacturer
objTextFile.WriteLine "Model: " & cModel

'****************
'Get BIOS Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
For Each objItem In colItems
objTextFile.WriteLine "Serial Number: " & objItem.SerialNumber
Next

'**********************************
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)
For Each objItem in colItems
objTextFile.WriteLine "CPU: " & trim(objItem.Name) & " " & objItem.CurrentClockSpeed & " MHz"
Next

'**************************************
objTextFile.WriteLine "Memory: " & TotalVisibleMemory & " MB"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk",,48)
For Each objItem in colItems
ndisktype = objItem.DriveType
If ndisktype = 3 Then
objTextFile.WriteLine "Disk: " & objItem.Caption
objTextFile.WriteLine "Size: " & objItem.Size
objTextFile.WriteLine "FreeSpace: " & objItem.FreeSpace
End If
If ndisktype = 5 Then
objTextFile.WriteLine "CD Drive: " & objItem.Caption
End If
Next

objTextFile.WriteLine "Softwares: *****Programs found in Control Panel Add/Remove *********** "

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
UnistallValue = ""
DisplayValue = ""
strKeyPath1 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & subkey
oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath1, arrValueNames , arrValueTypes

If Not Isnull(arrValueTypes) Then
For i = 0 To UBOUND(arrValueNames)
If arrValueNames(i) = "DisplayName" Then
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath1,arrValueNames(i),strValue
DisplayValue = strValue
End if
If arrValueNames(i) = "UninstallString" Then
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath1,arrValueNames(i),strValue
UnistallValue = strValue
End if
Next
IF UnistallValue <> "" AND DisplayValue <> "" THEN
objTextFile.WriteLine "Software: " & DisplayValue ' & vbtab & UnistallValue
End If
End If
Next

objTextFile.Close
cfullpath = windir & "\sharefolder\" & cComputerName & ".rpt"

servfpath = "\\servername\sharedfolder$\serverfolder\" & cComputerName & ".rpt"
'modify \\servername\sharedfolder$\serverfolder\ to your servername & shared folder
' copy the report to the shared folder in the server

'Set WshShell = WScript.CreateObject("WScript.Shell")
'Return = WshShell.Run("notepad " & cfullpath, 1, true)

Set fso = CreateObject("Scripting.FileSystemObject")
'Set objFSO = CreateObject("Scripting.FileSystemObject")

' if the report file exist in the server, rename the file
If fso.FileExists(servfpath) Then
GetCurrentDate = FormatDateTime(Date, 2)
' filext = Replace(GetCurrentDate, "/", "-")
MyString1 = Replace(now, "/", "-")
MyString2 = Replace(MyString1 , ":", "")
filext = Replace(MyString2 , " ", "-")

FSO.MoveFile servfpath , "\\servername\sharedfolder$\serverfolder\" & cComputerName & "." & filext
End If

destFile = "\\servername\sharedfolder$\serverfolder\"
fso.CopyFile cfullpath ,destFile,True
Set fso = Nothing
WScript.Quit