Я бы предпочел не бегать, проверяя каждую машину индивидуально, есть ли какое-нибудь серверное программное обеспечение, которое я могу использовать? Это смешанная сеть Linux / Windows (клиенты и серверы), но меня интересуют только клиенты Windows.
Спасибо @mh за ссылку на WMI. Вот сценарий, который у меня получился.
On Error resume next
strDomain = "domain.local"
Set objFSO = CreateObject("Scripting.FileSystemObject")
if err.number <> 0 then Wscript.quit
set domObj = GetObject("WinNT://" & strDomain)
domObj.Filter = Array("computer")
For Each objComputer In domObj
err.clear
strComputer = objComputer.Name
computerName = "UNKNOWN"
loggedOnUser =""
sp = ""
ram = ""
cpu = ""
cpuMhz = ""
xres = ""
yres = ""
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
if err.number=0 then
' Query "BIOS" properties
' computer name
Set colItems = objWMIService.ExecQuery("Select * From Win32_BIOS")
For Each objItem in colItems
computerName = objItem.Path_.Server
Next
' Query Processor properties
' Family
' ...
Set colItems = objWMIService.ExecQuery("Select * From Win32_Processor")
For Each objItem in colItems
cpu = objItem.Manufacturer & " " & objItem.Name
cpuMhz = objItem.MaxClockSpeed
Next
' Query Operating System properties
' SP Level
' RAM
Set colItems = objWMIService.ExecQuery("Select * From Win32_OperatingSystem")
For Each objItem in colItems
sp = objItem.ServicePackMajorVersion
ram = objItem.TotalVisibleMemorySize
Next
' Query Computer System properties
' User
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")
For Each objItem in colItems
loggedOnUser = objItem.UserName
Next
' Query Display properties
' Screen resolution
Set colItems = objWMIService.ExecQuery("Select * From Win32_DisplayConfiguration")
For Each objItem in colItems
xres = objItem.PelsWidth
yres = objItem.PelsHeight
Next
strFile = "\\server\data\inventory\" & computerName & ".txt"
Set objTextFile = objFSO.OpenTextFile(strFile, 2, True)
if err.number <> 0 then Wscript.quit
objTextFile.WriteLine("Computer Name: " & strComputer)
if err.number <> 0 then Wscript.quit
if loggedOnUser <> "" then objTextFile.WriteLine("User: " & loggedOnUser)
if cpu <> "" then objTextFile.writeLine("CPU: " & cpu)
if cpuMhz <> "" then objTextFile.writeLine("CPU MHZ: " & cpuMhz)
if ram <> "" then objTextFile.WriteLine("RAM: " & ram)
if sp <> "" then objTextFile.WriteLine("Service Pack: " & sp)
if xres <> "" then objTextFile.WriteLine("Horizontal resolution: " & xres)
if yres <> "" then objTextFile.WriteLine("Vertical resolution: " & yres)
objTextFile.Close
end if
next
Для клиентов Windows вы можете использовать сценарий WMI, чтобы получить это. Информация Вот должно помочь вам начать работу.
Вы можете сделать это через SCOM, но, если честно, расколоть маленький орешек - сложная задача.