katacombz
asked on
MSINFO32 to query multiple systems
I am wanting a batch file or script that i can use to poll multiple systems for thier hardware and network config and output that into a report.
this will return the required information for 1 system
msinfo32 /computer <<computer name>> /categories +componentsnetwork /report c:\msinfo\report.txt
but i an needing to poll about 500 systems, is there a way to point the "/computer <computer name>" at a text file with a list of names then output that into individual files .txt or .csv
this will return the required information for 1 system
msinfo32 /computer <<computer name>> /categories +componentsnetwork /report c:\msinfo\report.txt
but i an needing to poll about 500 systems, is there a way to point the "/computer <computer name>" at a text file with a list of names then output that into individual files .txt or .csv
ASKER
No I am needing to query by name, I am needing to pull info from specific systems. trying to poll the servers only not all the desktops (1k+)
bit i think I have it all sorted after workign with one of our DB admin
strFilePath = "c:\msinfo\serverlist.txt"
Const ForReading = 1
Set objFSO = CreateObject("Scripting.Fi leSystemOb ject")
Set objtextFile = objFSO.OpenTextFile (strFilePath, 1)
Do Until objtextFile.AtEndOfStream
strComputer = Trim(objtextFile.ReadLine)
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S elect * from Win32_ComputerSystem",,48)
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Domain: " & objItem.Domain
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "NumberOfProcessors: " & objItem.NumberOfProcessors
Wscript.Echo "TotalPhysicalMemory: " & objItem.TotalPhysicalMemor y
Next
On Error Resume Next
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer)
Set colSWbemObjectSet = _
objSWbemServices.Instances Of("Win32_ LogicalMem oryConfigu ration")
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Total Physical Memory (kb): " & _
objSWbemObject.TotalPhysic alMemory
Next
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S elect * from Win32_Processor",,48)
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=imper sonate}!\\ " & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfig uration Where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddres s) to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S elect * from Win32_DiskDrive",,48)
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "Size: " & objItem.Size
Next
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S elect * from Win32_IP4RouteTable",,48)
For Each objItem in colItems
Wscript.Echo "Age: " & objItem.Age
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Destination: " & objItem.Destination
Wscript.Echo "Information: " & objItem.Information
Wscript.Echo "InstallDate: " & objItem.InstallDate
Wscript.Echo "InterfaceIndex: " & objItem.InterfaceIndex
Wscript.Echo "Mask: " & objItem.Mask
Wscript.Echo "Metric1: " & objItem.Metric1
Wscript.Echo "Metric2: " & objItem.Metric2
Wscript.Echo "Metric3: " & objItem.Metric3
Wscript.Echo "Metric4: " & objItem.Metric4
Wscript.Echo "Metric5: " & objItem.Metric5
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "NextHop: " & objItem.NextHop
Wscript.Echo "Protocol: " & objItem.Protocol
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "Type: " & objItem.Type
Next
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer)
Set colSWbemObjectSet = _
objSWbemServices.Instances Of("Win32_ LogicalMem oryConfigu ration")
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Total Virtual Memory (kb): " & _
objSWbemObject.TotalVirtua lMemory
Next
loop
objTextFile.close
bit i think I have it all sorted after workign with one of our DB admin
strFilePath = "c:\msinfo\serverlist.txt"
Const ForReading = 1
Set objFSO = CreateObject("Scripting.Fi
Set objtextFile = objFSO.OpenTextFile (strFilePath, 1)
Do Until objtextFile.AtEndOfStream
strComputer = Trim(objtextFile.ReadLine)
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Domain: " & objItem.Domain
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "NumberOfProcessors: " & objItem.NumberOfProcessors
Wscript.Echo "TotalPhysicalMemory: " & objItem.TotalPhysicalMemor
Next
On Error Resume Next
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer)
Set colSWbemObjectSet = _
objSWbemServices.Instances
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Total Physical Memory (kb): " & _
objSWbemObject.TotalPhysic
Next
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=imper
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfig
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress)
For i=LBound(IPConfig.IPAddres
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "Size: " & objItem.Size
Next
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("S
For Each objItem in colItems
Wscript.Echo "Age: " & objItem.Age
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Destination: " & objItem.Destination
Wscript.Echo "Information: " & objItem.Information
Wscript.Echo "InstallDate: " & objItem.InstallDate
Wscript.Echo "InterfaceIndex: " & objItem.InterfaceIndex
Wscript.Echo "Mask: " & objItem.Mask
Wscript.Echo "Metric1: " & objItem.Metric1
Wscript.Echo "Metric2: " & objItem.Metric2
Wscript.Echo "Metric3: " & objItem.Metric3
Wscript.Echo "Metric4: " & objItem.Metric4
Wscript.Echo "Metric5: " & objItem.Metric5
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "NextHop: " & objItem.NextHop
Wscript.Echo "Protocol: " & objItem.Protocol
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "Type: " & objItem.Type
Next
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer)
Set colSWbemObjectSet = _
objSWbemServices.Instances
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Total Virtual Memory (kb): " & _
objSWbemObject.TotalVirtua
Next
loop
objTextFile.close
ASKER
Oh and I am kicking thsi off with a batch file
c:
cd c:\msinfo
cls
cscript testscript.vbs >c:\msinfo\testscript.csv
c:
cd c:\msinfo
cls
cscript testscript.vbs >c:\msinfo\testscript.csv
ASKER
I think I provided a solution to the question
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
The below example shows the results in a message box but I am sure you could put them in a text file rather easily
This is a link to the windows scripting center
http://www.microsoft.com/technet/scriptcenter/default.mspx
Save this code into a .vbs file and it ping the machines in the list
******
strMachines = "10.1.1.67;10.1.1.53;10.1.
aMachines = split(strMachines, ";")
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{imper
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCod
WScript.Echo("Computer " & machine & " is not reachable")
End If
Next
Next
****