Сбор сведений о компьютере (VBScript+WMI)


Сценарий собирает сведения о версии Windows, процессоре, материнской плате, дисках, сетевой плате и записывает их в текстовый файл с именем компьютера.

Option Explicit

Const CPU = "Win32_Processor"
Const MB = "Win32_BaseBoard"
Const disk = "Win32_DiskDrive"
Const OS = "Win32_OperatingSystem"
Const network = "Win32_NetworkAdapter"

Dim objFSO, objTS, objShell
Dim LogPath 'путь к файлу протокола
Dim LogDir 'каталог для файла протокола
Dim LogName 'имя файла протокола
Dim HostName 'имя компьютера

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

HostName = objShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
LogName = HostName & ".txt"
LogDir = objFSO.GetParentFolderName(WScript.ScriptFullName)
LogPath = objFSO.BuildPath(LogDir, LogName)

Set objTS = objFSO.CreateTextFile(LogPath, True, true)

Dim strComputer, objLocator, objService
strComputer = "."

'assumes strComputer contains the computer name
Dim objWMI
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

'assumes objWMI is a WMI connection
Dim colResults, objResult, strWMIQuery
Dim OsVersion 'версия ОС
Dim OsMajorVersion

objTS.WriteLine "ComputerName: " & HostName
WriteProperties OS
WriteProperties CPU
WriteProperties MB
WriteProperties disk
WriteProperties network

objTS.Close
MsgBox "Сведения о компьютере записаны в файл '" & LogName & "' в этой же папке", _
  vbOKOnly, WScript.ScriptName

Sub WriteProperties(ClassName)
  strWMIQuery = "SELECT * FROM " & ClassName
  Set colResults = objWMI.ExecQuery(strWMIQuery)
  objTS.WriteLine ClassName
  For Each objResult In colResults
    Select Case ClassName
      Case CPU
        objTS.WriteLine " Name: "   & objResult.Name
        objTS.WriteLine " ProcessorId: "   & objResult.ProcessorId
      Case MB
        objTS.WriteLine " Manufacturer: " & objResult.Manufacturer
        objTS.WriteLine " Product: " & objResult.Product
  	    objTS.WriteLine " SerialNumber: " & objResult.SerialNumber
  	  Case disk
  	    objTS.WriteLine " Name: " & objResult.Name
  	    objTS.WriteLine "  InterfaceType: " & objResult.InterfaceType
  	    objTS.WriteLine "  MediaType: " & objResult.MediaType
  	    objTS.WriteLine "  Model: " & objResult.Model
            'Windows 2000/XP/2003: нет свойства Win32_DiskDrive.SerialNumber
  	    If OsMajorVersion > 5 Then
          objTS.WriteLine "  SerialNumber: " & objResult.SerialNumber
        End If
  	  Case OS
        OsVersion = objResult.Version
        Dim DotPos
        OsMajorVersion = 0
        DotPos = InStr(OsVersion, ".")
        If DotPos > 0 then
          OsMajorVersion = CByte(Left(OsVersion, DotPos - 1))
        End If
        objTS.WriteLine "  OS: " & objResult.Caption + objResult.CSDVersion
        objTS.WriteLine "  OS version: " & OsVersion
      Case network
        'Windows 2000/XP/2003: нет свойства Win32_NetworkAdapter.PhysicalAdapter
        If OsMajorVersion > 5 Then
          If objResult.PhysicalAdapter Then
            objTS.WriteLine " Name: " & objResult.Name
            objTS.WriteLine "  MAC address: " & objResult.MACAddress
          End If
        End If
    End Select
  Next
End Sub
Реклама
Запись опубликована в рубрике scripting с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s