Файл: 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
Оставить запись с благодарностью..
В начало.
Hosted by uCoz