Файл: inventar.vbs
' Собрал: Орлов В.И.
' цшдшфьы"нфтвучюкг
' icq:5279603
' Изменен:02.04.2012
Option Explicit
On Error Resume Next
Dim FSO, WshNetwork, strComputer, LogFile
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set WshNetwork = WScript.CreateObject("WScript.Network")
strComputer = WshNetwork.ComputerName
LogFile = "\\domen\shara\Inventary\" & strComputer & ".log"
if FSO.FileExists(LogFile) then
wscript.quit(0) ' ' отчет уже есть
end if
Dim objService, objItem, WshShell, MicroSoft, DigitalProductIdWindows, Word, WindowsKey, objObject
Dim objPhMem, SummMem, objKeyb, objMouse, objSound, objVideo, objntw, objMon, objFloppy, objDisk
Dim OfficeKey, DigitalProductIdOffice
Set objService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
If Err.Number <> 0 Then
Log Err.Number & ": " & Err.Description
WScript.Quit
End If
Log "#======================= КОМП ======================================="
For Each objItem in objService.ExecQuery("SELECT * FROM Win32_OperatingSystem",,48)
Log now & " -#- Дата инвентаризации"
Log objItem.Caption & " " & objItem.CSDVersion & " " & objItem.Version & " -#- Операционка"
Log objItem.CSName & " -#- Компьютер"
Log objItem.Description & " -#- Описание ПК"
Log objItem.Organization & " -#- Организация ПК"
Log objItem.RegisteredUser & " -#- Организация пользователя"
Log objItem.SerialNumber & " -#- SerialNumber"
Next
' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Set WshShell = CreateObject("WScript.Shell")
MicroSoft = "HKLM\SOFTWARE\Microsoft"
'Err.Number = 0
DigitalProductIdWindows = MicroSoft & "\Windows NT\CurrentVersion\DigitalProductId"
Set Word = CreateObject("Word.Application")
DigitalProductIdOffice = MicroSoft & "\Office\" & Word.Version & "\Registration\" & word.ProductCode & "\DigitalProductId"
'If Err.Number = 0 Then
OfficeKey = GetKey(WshShell.RegRead(DigitalProductIdOffice))
Log OfficeKey & " -#- Ключ MS Office (" & Word.Version & ")"
'Else
' Log "MS Office не установлен -#- Ключ MS Office"
'End If
Word.Quit
WindowsKey = GetKey(WshShell.RegRead(DigitalProductIdWindows))
Log WindowsKey & " -#- Ключ Windows"
' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Log "#======================= КОМП ======================================="
For Each objItem in objService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
Log objItem.Model & " -#- Модель компа"
Next
Log "#======================= БИВИС ======================================="
For Each objItem in objService.ExecQuery("SELECT * FROM Win32_BIOS WHERE PrimaryBIOS = True",,48)
Log objItem.Manufacturer & " -#- Производитель биос"
Log objItem.Name & " -#- Дата биос"
Log objItem.SerialNumber & " -#- Серийник из биос"
Log objItem.Version & " -#- Версия биос"
Next
Log "#======================= КОРПУС ======================================="
'Класс Win32_SystemEnclosure представляет свойства, связанные с физическим системным корпусом компьютера.
For Each objObject In objService.ExecQuery("SELECT * FROM Win32_SystemEnclosure")
Log objObject.Manufacturer & " -#- Производитель корпуса"
Log objObject.SMBIOSAssetTag & " -#- Серийник с корпуса"
Next
Log "#======================= МАТЬ БАЗЕБОАРД ==============================="
'Класс Win32_BaseBoard предоставляет сведения о материнской плате.
For Each objObject In objService.ExecQuery("SELECT * FROM Win32_BaseBoard")
Log objObject.Manufacturer & " -#- Производитель мамки"
Next
Log "#======================= ПРОЦЕССОР ===================================="
Log WScript.CreateObject("WScript.Shell").RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\ProcessorNameString") & " -#- Процессор"
Log "#======================= ПАМЯТЬ ======================================="
'Экземпляр класса Win32_PhysicalMemory представляет физическое устройство памяти,
'расположенное на компьютере и доступное операционной системе.
For Each objPhMem In objService.ExecQuery("SELECT * FROM Win32_PhysicalMemory")
Log objPhMem.BankLabel & " -#- BankLabel гнездо"
Log objPhMem.DeviceLocator & " -#- гнездо или монтажная схема, к которой подключена память"
Log SizePrint(objPhMem.Capacity) & " -#- размер физической памяти в байтах"
SummMem = SummMem + objPhMem.Capacity*1
Next
Log SizePrint(SummMem) & " -#- Общий размер памяти в байтах"
Log "#======================= КЛАВА ========================================"
'Класс Win32_Keyboard содержит сведения о клавиатуре.
For Each objKeyb In objService.ExecQuery("SELECT * FROM Win32_Keyboard")
Log objKeyb.Caption & " -#- наименование клавы"
Log objKeyb.Description & " -#- описание клавы"
Next
Log "#======================= МЫХ =========================================="
'Класс Win32_PointingDevice содержит сведения о мыши.
For Each objMouse In objService.ExecQuery("SELECT * FROM Win32_PointingDevice")
Log objMouse.Caption & " -#- наименование мышки"
Log objMouse.Description & " -#- описание мышки"
Log objMouse.HardwareType & " -#- тип мышки"
Log objMouse.Manufacturer & " -#- производитель мышки"
Next
Log "#======================= ЗВУКОВУХА ===================================="
'Класс Win32_SoundDevice содержит сведения о звуковой карте.
For Each objSound In objService.ExecQuery("SELECT * FROM Win32_SoundDevice")
Log objSound.Caption & " -#- наименование звуковой карты"
Log objSound.Manufacturer & " -#- производитель звуковой карты"
Next
Log "#======================= ВИДЕОКАРТА ==================================="
'Класс Win32_VideoController содержит сведения о видеокарте.
For Each objVideo In objService.ExecQuery("SELECT * FROM Win32_VideoController")
if lcase(left(trim(objVideo.PNPDeviceID),3)) = "pci" then
Log objVideo.Caption & " -#- наименование видеокарты"
Log SizePrint(objVideo.AdapterRAM) & " -#- размер памяти видеокарты в байтах"
end if
Next
Log "#======================= СЕТЕВУХИ ====================================="
'Классы Win32_NetworkAdapter и Win32_NetworkAdapterConfiguration содержат сведения о сетевых адаптерах.
'Класс Win32_NetworkAdapterConfiguration предоставляет ряд свойств сетевого адаптера, а также
' включает дополнительные методы, которые поддерживают управление протоколами TCP/IP и IPX, службами
' DNS, DHCP, WINS и т.д. Перечень свойств и методов этого класса достаточно обширен; для получения
' информации обращайтесь к MSDN.
For Each objNtw In objService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
if lcase(left(trim(objNtw.PNPDeviceID),4)) <> "root" then
Log objNtw.Name & " -#- наименование сетевухи"
Log objNtw.ServiceName & " -#- краткое наименование сетевухи"
Log objNtw.MACAddress & " -#- MAC адрес сетевухи"
end if
Next
Log "#======================= МОНИТОР ======================================"
'Класс Win32_DesktopMonitor предоставляет сведения о мониторе, подключённом к компьютерной системе.
For Each objMon In objService.ExecQuery("SELECT * FROM Win32_DesktopMonitor")
Log objMon.Caption & " -#- наименование монитора"
Log objMon.Description & " -#- описание монитора"
Log objMon.DeviceID & " -#- идентификатор монитора"
Log objMon.PNPDeviceID & " -#- идентификатор монитора Plug-and-Play"
Log objMon.MonitorManufacturer & " -#- производитель монитора"
Log objMon.ScreenHeight & "x" & objMon.ScreenWidth & " -#- логическая высотаXширина монитора"
exit for
Next
Log "#======================= ФЛОПИ ДИСКОВОД ==============================="
'Класс Win32_FloppyDrive предоставляет сведения о дисководах гибких дисков.
For Each objFloppy In objService.ExecQuery("SELECT * FROM Win32_FloppyDrive")
Log objFloppy.Caption & " -#- наименование флопика "
Log objFloppy.Description & " -#- описание флопика"
Log objFloppy.Manufacturer & " -#- производитель флопика"
Next
Log "#======================= ХАРДЫ ========================================"
'Класс Win32_DiskDrive предоставляет сведения о дисководах.
For Each objDisk In objService.ExecQuery("SELECT * FROM Win32_DiskDrive")
if NOT lcase(objDisk.InterfaceType) = "usb" then
Log objDisk.Model & " -#- модель HDD, указанная производителем"
Log objDisk.InterfaceType & " -#- тип интерфейса HDD (IDE, SCSI)"
Log SizePrint(objDisk.Size) & " -#- размер HDD диска"
end if
Next
Log "#======================= СИДИРОМ ======================================"
'Класс Win32_CDROMDrive предоставляет сведения об устройствах CD-ROM.
For Each objDisk In objService.ExecQuery("SELECT * FROM Win32_CDROMDrive")
Log objDisk.Caption & " -#- наименование CD-ROM"
Log objDisk.Id & " -#- буква диска CD-ROM"
Next
Set FSO = Nothing
Set WshNetwork = Nothing
Set WshShell = Nothing
Set Word = Nothing
Wscript.quit(0)
Function GetKey(byval p)
Dim pc, i, a, ProductKey, j
pc="BCDFGHJKMPQRTVWXY2346789"
For i=0 To 28
a=0
For j=0 To 14
a=p(66-j)+a*256
p(66-j)=(a\24) And 255
a=a Mod 24
Next
ProductKey = Mid(pc,a+1,1) & ProductKey
If (((i+2) Mod 6)=0) And (i<28) Then
i=i+1
ProductKey = "-" & ProductKey
End If
Next
GetKey = ProductKey
End Function
Function log(sData)
Dim ts, ForAppending
ForAppending = 8
Set ts = FSO.OpenTextFile(LogFile, ForAppending, True)
ts.WriteLine(sData)
ts.Close
Set ts = Nothing
End Function
Function SizePrint(Value)
dim KB, MB, GB, TB
KB=1024
MB=KB*1024
GB=MB*1024
if Value < KB then
SizePrint = Round(value,2) & " b"
elseif value > KB-1 and value < mb-1 then
SizePrint = Round(value/KB,2) & " Kb"
elseif value > MB-1 and value < Gb-1 then
SizePrint = Round(value/MB,2) & " Mb"
elseif value > GB-1 then
SizePrint = Round(value/Gb,2) & " Gb"
end if
End Function