|
Получение информации о железе компа.
В своей работе часто приходится сталкиваться с мелкими проблемами, которые создают нам пользователи. Иногда диву даешься, как они ухитряются это делать, пытаешься повторить - ну никак, никак не получается. Вот и приходится зачастую решать совсем уж необычные вещи. Каждый из нас привык пользоваться для их решения своими любимыми инструментами, но иногда ничего подходящего под рукой не оказывается. И приходится выкручиваться длинными обходными путями, или топать ножками к пользователю и там уже разбираться, что не так.
Сталкиваясь каждый раз с новыми задачами, мы ищем и новые инструменты, или придумываем сами решения на следующий раз. Вот одна из задач, с которой наверняка сталкивается каждый администратор, это получение информации о составляющих и настройках компьютера. Быстрый путь к этой информации предоставляет нам WMI. Чрезвычайно мощная вещь, и похоже ужасно перспективная, в последнее время продвигается все активнее и предоставляя нам все больше возможностей. Маленький кусочек ее использования - пример скриптов для получения информации об основном состоянии компьютера пользователя.
Чтобы быстро получить информацию о текущем состоянии железа компьютера.
Скрипт, которые я использую в таких случаях, я привожу ниже. Он небольшой, и лежит под рукой с прописаным путем. Вот маленькие комментарии.
В начале скрипта возникает окно ввода имени компьютера. При пустом вводе подразумевается текущий компьютер.
Далее происходит сбор информации через WMI об основных компонентах, она собирается в строковую переменную, которая и выводится на экран в виде информационного окна.
Сам скрипт, как вы видите, предельно прост и в использовании, и в написании. Если у кого есть необходимость, можно эту информацию записывать в выходной файл, добавив в конец всего несколько строк. У меня такой необходимости нет, данный скрипт используется только для сиюминутного получения результата. Постоянная информация собирается другим способом в базу данных.
On Error Resume Next
' скрипт сделан 12.05.2003
' Денисов Виктор, Тольятти, v-vag@mail.ru.
Input = InputBox("Введите имя компьютера:" ,_
"Отображение информации о железе : Ввод имени компьютера.")
If Input = "" Then
strComputer = "."
Dim WSHNetwork
Set WSHNetwork = WScript.CreateObject("WScript.Network")
strComput = WSHNetwork.Computername
Else
strComputer = Input
strComput = strComputer
End If
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\"_
& strcomputer & "\root\cimv2")
'----------------------------------- Processor - hardware
strproc = ""
Set colSettings = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objProcessor in colSettings
strproc = strproc & "CpuName: " & vbTab & trim(objProcessor.Name) & vbNewLine & "Description: " & vbTab & trim(objProcessor.Description) & vbNewLine & "Socket: " & trim(objProcessor.SocketDesignation) & vbTab & "MaxClock: " & trim(objProcessor.MaxClockSpeed) & vbTab & "CurrentClock: " & trim(objProcessor.CurrentClockSpeed) & vbTab & "ExtClock: " & trim(objProcessor.ExtClock) & vbTab & "L2cachesize: " & trim(objProcessor.L2cachesize) & vbTab & "l2cachespeed: " & trim(objProcessor.l2cachespeed) & vbNewLine & vbNewLine
Next
'----------------------------------- PhysicalMemory - hardware
strRam = ""
Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory",,48)
For Each objItem in colItems
strRam = strRam & "Capacity: " & objItem.Capacity & vbTab & "BankLabel: " & objItem.BankLabel & vbTab & "DeviceLocator: " & objItem.DeviceLocator & vbTab & "MemoryType: " & objItem.MemoryType & vbTab & "TotalWidth: " & objItem.TotalWidth & vbTab & "TypeDetail: " & objItem.TypeDetail & vbNewLine
Next
strRam = strRam & vbNewLine
'----------------------------------- Disk - hardware
strhard = ""
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)
For Each objItem in colItems
Set colItems2 = objWMIService.ExecQuery("Select * from Win32_PhysicalMedia",,48)
For Each objItem2 in colItems2
If objItem2.Tag = objItem.DeviceId Then
strserial = objItem2.SerialNumber
Else
End If
Next
strhard = strhard & "Model: " & vbTab & objItem.Model & vbTab & "SerialNumber: " & vbTab & strserial & vbNewLine & "size: " & vbTab & objItem.Size & vbTab & "TotalCylinders: " & objItem.TotalCylinders & vbTab & "TotalHeads: " & objItem.TotalHeads & vbTab & "TotalSectors: " & objItem.TotalSectors & vbTab & "TotalTracks: " & objItem.TotalTracks & vbTab & "TracksPerCylinder: " & objItem.TracksPerCylinder & vbNewLine & vbNewLine
Next
'----------------------------------- cdrom - hardware
strcdrom = ""
Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive",,48)
For Each objItem in colItems
strcdrom = strcdrom & "CDROM: " & objItem.Name & vbNewLine
Next
strcdrom = strcdrom & vbNewLine
'----------------------------------- Floppy - hardware
strflop = ""
Set colItems = objWMIService.ExecQuery("Select * from Win32_FloppyDrive",,48)
For Each objItem in colItems
strflop = strflop & "Floppy: " & objItem.Name & vbNewLine & vbNewLine
Next
'----------------------------------- sound - hardware
strsound = ""
Set colItems = objWMIService.ExecQuery("Select * from Win32_SoundDevice",,48)
For Each objItem in colItems
strsound = strsound & "soundManufacturer: " & objItem.Manufacturer & "soundName: " & objItem.Name & vbNewLine
Next
strsound = strsound & vbNewLine
'----------------------------------- video - hardware
strvideo = ""
Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController",,48)
For Each objItem in colItems
strvideo = strvideo & "VideoName: " & objItem.Name & vbNewLine & "VideoProcessor: " & objItem.VideoProcessor & vbNewLine & "AdapterRAM: " & objItem.AdapterRAM & vbTab & "VideoModeDescription: " & objItem.VideoModeDescription & vbTab & "CurrentRefreshRate: " & objItem.CurrentRefreshRate & vbNewLine & "InstalledDisplayDrivers: " & objItem.InstalledDisplayDrivers & vbTab & "DriverVersion: " & objItem.DriverVersion & vbNewLine & vbNewLine
Next
'----------------------------------- network - hardware
strnet = ""
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48)
For Each objItem in colItems
If objItem.MACAddress <> "" and instr(Lcase(objItem.ProductName), "wan") = 0 and instr(Lcase(objItem.ProductName), "ras") = 0 and instr(Lcase(objItem.ProductName), "порт") = 0 and instr(Lcase(objItem.ProductName), "direct") = 0 then
strnet = strnet & "netname: " & objItem.ProductName & vbTab & vbTab & "macaddress: " & objItem.MACAddress & vbNewLine
Else
End if
Next
strnet = strnet & vbNewLine
Wscript.Echo "На компьютере """ & strComput & """ установлено:" & vbNewLine & vbNewLine & vbTab & "Процессор:" & vbNewLine & strproc & vbTab & "Озу: " & vbNewLine & strRam & vbTab & "Hard:" & vbNewLine & strhard & vbTab & "cdrom: " & vbNewLine & strcdrom & vbTab & "floppy: " & vbNewLine & strflop & vbTab & "Sound: " & vbNewLine & strsound & vbTab & "Video: " & vbNewLine & strvideo & vbTab & "Net: " & vbNewLine & strnet
wscript.quit
|