'==========================================================================
'
' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 3.0
'
' NAME: CompConfig
'
' AUTHOR: Ruslan Demidow
' DATE : 04.07.2005
'
' COMMENT: Получает общие данные о конфигурации компьютера
'
'==========================================================================
'Win32_Processor - Данные процессора
'Win32_VideoConfiguration - Конфигурация видео
'Win32_LogicalMemoryConfiguration - Конфигурация памяти
'Win32_Printer - Конфигурация принтеров
'Win32_NetworkAdapterConfiguration - Конфигурация сетевых контроллеров
'Win32_NetworkAdapter - коллекция сетевых адаптеров
'Win32_NetworkLoginProfile - Сетевая конфигурация пользователя
'Win32_DiskDrive - Данные о жёстких дисках
'Win32_FloppyDrive - данные о флопиках
'Win32_CDROMDrive - Данные о сидюках
'Win32_GroupInDomain - Доменная информация пользователя
'Win32_AccountSID - Учётная запись пользователя
Option explicit
Dim Accounts, Account
Dim WMI, SQuery, S, Shell, FSO, TXT
Dim CompName
Const DELIM_STRING = "--------------------------------"
Const FOR_READING=1
CONST FOR_WRITING=2
Const FOR_APPENDING=1
set WMI=getobject("Winmgmts:")
CreateReport
SaveReport "C:\Report.txt", true
WScript.Quit(0)
Sub CreateReport
On Error Resume next
S=S & getcompdata & GetProcessorData & _
GetVideoData & GetMemoryData & _
GetPrintersData & GetNetworkAdaptersData & _
GetIPaddress & _
GetHardDrivesData & GetFloppyDrivesData & _
GetCDDriveData & GetUserLoginData
SaveReport "\\main\VBSFolder\UsersDataFromVBS\" & compName & ".txt" ,false
End sub
Function GetProcessorData()
Dim Processors, Processor
Dim str
'Получим данные по процессору
On Error Resume next
S= "ПРОЦЕССОР:" & vbcrlf
SQuery="select * from Win32_Processor"
Set Processors=WMI.execquery(SQuery)
For Each Processor In Processors
Str=Str & "Архитектура: " & Processor.Architecture & vbcrlf
Str=Str & "Производитель: " & Processor.Manufacturer & vbcrlf
Str= Str & "Частота: " & Processor.CurrentClockSpeed & " Mhz" & vbcrlf
Str=Str & "Размер кеша второго уровня: " & Processor.L2CacheSize & " Kb" & vbcrlf
Str=Str & "Частота кеша второго уровня: " & Processor.L2CacheSpeed & " Mhz" & vbcrlf
Str=Str & "DeviceID: " & Processor.DeviceID & vbcrlf
Str=Str & "Description: " & Processor.description & vbcrlf
Str=Str & "Семейство: " & Processor.Family & vbcrlf
Str=Str & "Тип процессора: " & Processor.Level & vbcrlf
Str=Str & "Средняя величина загруженности на данный момент: " & Processor.LoadPercentage & "%" & vbcrlf
Str=Str & "Максимальное быстродействие: " & Processor.MaxClockSpeed & " Mhz" & vbcrlf
Str=Str & "Версия: " & Processor.Version & vbcrlf
Str=Str & DELIM_STRING & vbcrlf & vbcrlf
Next
getprocessordata=str
End Function
Function GetVideoData()
dim Videos,Video
Dim str, st
On Error Resume next
'Получим данные по видео конфигурации
str=str & "ВИДЕО (ТЕКУЩИЕ НАСТРОЙКИ):" & vbcrlf
SQuery="select * from Win32_VideoConfiguration"
Set Videos=WMI.execquery(SQuery)
For Each Video In Videos
With Video
str=str & "Текущее количество цветов экрана: " & video.ActualColorResolution & vbcrlf
str=str & "Чип видеоадаптера: " & Video.AdapterChipType & vbcrlf
str=str & "Изготовитель адаптера: " & Video.AdapterCompatibility & vbcrlf
str=str & "Название DAC: " & Video.AdapterDACType & vbcrlf
str=str & "Описание видеоадаптера: " & Video.AdapterDescription & vbcrlf
str=str & "Объём видеодаптера: " & Video.AdapterRAM/1048576 & " Mb" & vbcrlf
str=str & "Тип видеоадаптера: " & Video.AdapterType & vbcrlf
str=str & "Разрешение: " & video.HorizontalResolution & "x" & video.VerticalResolution & vbcrlf
str=str & "Драйвер: " & Video.InstalledDisplayDrivers & vbcrlf
str= str & "Монитор: "
St="Монитор: "
st= st & Video.MonitorManufacturer & vbcrlf
If st="Монитор: " & vbcrlf Then
str = str & "Стандартный или Plug-n-Play" & vbcrlf
else
str= str & Video.MonitorManufacturer & vbcrlf
str=str & "Модель монитора: " & video.MonitorType & vbcrlf
End if
If Video.RefreshRate=0 Or Video.RefreshRate=1 Then
str=str & "Частота обновления экрана: По умолчанию" & vbcrlf
Else
str=str & "Частота обновления экрана: " & Video.RefreshRate & " hz" & vbcrlf
End If
str= str & DELIM_STRING & vbcrlf & vbcrlf
End with
Next
GetVideoData=str
End Function
Function GetMemoryData()
Dim Memory, Memoryes
Dim str
On Error Resume next
'Получим данные по памяти
SQuery="select * from Win32_LogicalMemoryConfiguration"
Set Memoryes=WMI.execquery(SQuery)
For Each Memory In Memoryes
str= str & "ПАМЯТЬ: " & vbcrlf
str=str & "Всего доступно: " & round((Memory.TotalPhysicalMemory)/1024 ,0) & " Mb" & vbcrlf
str=str & "Описание: " & memory.Description & vbcrlf
next
str=str & DELIM_STRING & vbcrlf & vbcrlf
GetMemoryData=str
End Function
Function GetCompData()
Dim Comp, colComp
Dim str
On Error Resume next
'Получим данные компьютера
SQuery="select * from Win32_ComputerSystem"
Set colcomp=WMI.execquery(SQuery)
str=str & "КОМПЬЮТЕР:" & VBCRLF
For Each Comp In colComp
str=str & "Имя: " & Comp.Name & vbcrlf
CompName=Comp.Name
If CompName="MAIN" Or CompName="1C" Then
WScript.Quit(0)
End if
str=str & "Входит в домен или рабочую группу: " & Comp.domain & vbcrlf
str=str & "Имя пользователя: " & Comp.UserName & vbcrlf
next
str=str & DELIM_STRING & vbcrlf & vbcrlf
getcompdata=str
End function
Function GetPrintersData()
Dim Printers, Printer
Dim str
On Error Resume next
'Получим данные по принтерам
SQuery="select * from Win32_Printer " 'where=Atributes.Local>0"
Set Printers=WMI.execquery(SQuery)
str=str & "ПРИНТЕРЫ: " & VBCRLF
For Each Printer In Printers
str=str & "' ' ' ' ' ' ' ' ' ' ' ' ' ' " & vbcrlf
str=str & "Имя: " & Printer.Name & vbcrlf
If trim(Printer.ServerName)="" Then
str= str & "Подключен к " & Printer.PortName & " (локальный)" & vbcrlf
Else
str= str & "Подключен к " & Printer.PortName & vbcrlf
str=str & "Общий доступ под именем: " & printer.ShareName & vbcrlf
End If
Next
str=str & DELIM_STRING & vbcrlf & vbcrlf
GetPrintersData=str
End Function
Function GetNetworkAdaptersData()
Dim colAdapters, obAdapter
Dim NetwokAdapters, Adapter
Dim str
On Error Resume next
'Получим информацию по сетевым адаптерам
str=str & "СЕТЕВЫЕ АДАПТЕРЫ: " & vbcrlf
SQuery="select * from Win32_NetworkAdapter where AdapterType='Ethernet 802.3'"
Set NetwokAdapters=WMI.execquery(SQuery)
If NetwokAdapters.count>0 Then
For each Adapter In NetwokAdapters
str=str & "Имя: " & Adapter.name & vbcrlf
SQuery="select * from Win32_NetworkAdapterConfiguration Where Index=" & adapter.deviceID
Set colAdapters=WMI.execquery(SQuery)
For Each obAdapter In colAdapters
str=str & "DNSHostName: " & obAdapter.DNSHostName & vbcrlf
Next
next
End If
str=str & DELIM_STRING & vbcrlf & vbcrlf
GetNetworkAdaptersData=str
End Function
Function GetUserLoginData()
dim NetLogin , colNetLogin
Dim str
On Error Resume next
'Получим информацию по сетевому логину пользователя
str= str & "СЕТЕВЫЕ ДАННЫЕ ПОЛЬЗОВАТЕЛЯ: " & vbcrlf
SQuery="select * from Win32_NetworkLoginProfile"
Set colNetLOgin=WMI.execquery(SQuery)
For Each NetLOgin In colNetLogin
'WScript.Echo InStrRev(NetLogin.name,"\",Len(NetLogin.name))
str=str & "Логин для входа в сеть: " & right(NetLogin.name,len(netlogin.name)-InStrRev(NetLogin.name,"\",Len(NetLogin.name))) & vbcrlf
str=str & "Тип учётной записи: " & netlogin.Usertype & vbcrlf
Next
str=str & DELIM_STRING & vbcrlf & vbcrlf
GetUserLoginData=str
End Function
Function GetCDDriveData()
Dim str, ColCD, CD, i
On Error Resume next
str=str & "CD-ПРИВОДЫ:" & VBCRLF
SQuery="select * from Win32_CDROMDrive"
Set ColCD=WMI.execquery(SQuery)
str=str & "Количество: " & ColCD.count & vbcrlf
For Each CD In ColCD
i=i+1
str=str & "Диск (" & CD.MediaType & ") " & CD.Drive & vbcrlf
str=str & CD.caption & vbcrlf
Next
str=str & DELIM_STRING & vbcrlf & vbcrlf
GetCDDriveData=str
End function
Function GetHardDrivesData()
Dim Drives, Drive, FisicalDrives, FisDrive
Dim str, Cilinder, Heads, Sectors, SectorSize
Dim colDriveMedia, DrvMedia, i
On Error Resume next
'Получим информацию о локальных дисках
str=str & "ЛОКАЛЬНЫЕ ЖЁСТКИЕ ДИСКИ:" & VBCRLF
SQuery="select * from Win32_DiskDrive"
Set drives=WMI.execquery(SQuery)
str = str & "Количество дисков: " & Drives.count & vbcrlf
For Each Drive In Drives
i=i+1
str=str & "Диск " & i & vbcrlf
str=str & "Имя диска: " & Drive.name & vbcrlf
str=str & "Тип диска: " & Drive.mediatype & vbcrlf
str=str & "Интерфейс: " & Drive.InterfaceType & vbcrlf
str=str & "Производитель: " & Drive.Manufacturer & vbcrlf
str=str & "Модель: " & Drive.model & vbcrlf
str=str & "Количество разделов: " & Drive.Partitions & vbcrlf
Select Case Drive.size/1048576
Case Drive.size/1048576 < 1048576
str=str & "Объём: " & round(Drive.size/1024,2) & " Kb" & vbcrlf
Case Drive.size/1048576 <1000000000
str=str & "Объём: " & round(Drive.size/1048576,2) & " Mb" & vbcrlf
Case Else
str=str & "Объём: " & round(Drive.size/1000000000,0) & " Gb" & vbcrlf '1073741824,2) & " Gb" & vbcrlf
End Select
str=str & vbcrlf
str=str & DELIM_STRING & vbcrlf & vbcrlf
Next
GetHardDrivesData=str
End Function
Function GetFloppyDrivesData()
Dim ColFloppyDrives, FloppyDrive
Dim str
On Error Resume next
'Получим данные о флопиках
str=str & "ЛОКАЛЬНЫЕ FLOPPY ДИСКИ:" & VBCRLF
SQuery="select * from Win32_FloppyDrive"
Set colfloppydrives=WMI.execquery(SQuery)
For Each FloppyDrive In ColFloppyDrives
str=str & "Имя диска: " & FloppyDrive.name & vbcrlf
str=str & "Производитель: " & FloppyDrive.Manufacturer & vbcrlf
str=str & vbcrlf
str=str & DELIM_STRING & vbcrlf & vbcrlf
next
str=str & DELIM_STRING & vbcrlf & vbcrlf
GetFloppyDrivesData=str
End function
Sub SaveReport(sFileName, bAskShowReport)
dim ask
On Error Resume next
Set FSO=CreateObject("Scripting.FileSystemObject")
Set TXT=FSO.OpenTextFile (sFileName,FOR_WRITING ,true)
TXT.Write (S)
TXT.Close
If baskshowreport Then
ask=msgbox( "Конфигурация данного компьютера сохранена в " & VBcrlf _
& "текстовый файл " & sfilename & vbcrlf & vbcrlf & _
"Открыть данный файл в блокноте?", vbyesNo)
if ask=vbyes then
set shell=createobject("Wscript.Shell")
dim cmdLine
CMDlINE="notepad.exe " & chr(34) & sfilename & Chr(34)
shell.run cmdLine
end If
End if
End Sub
Function GetIPaddress()
Dim colConf, obSettings
Dim colAdapters,obAdapter
Dim AdapterType, bShowVirtual
Dim Service, obService, bShowAll
Dim sStr
On Error Resume next
'Данные возвращаются в виде целого значения,
'которые расшифровываются следующим образом:
' 0 - Ethernet 802.3
' 1 - Token Ring 802.5
' 2 - Fiber Distributed Data Interface (FDDI)
' 3 - Wide Area Network (WAN)
' 4 - LocalTalk
' 5 - Формат Ethernet с заголовком DIX
' 6 - ARCNET
' 7 - ARCNET (878.2)
' 8 - ATM
' 9 - Беспроводной
' 10 - Инфракрасный
' 11 - Bpc
' 12 - CoWan
' 13 - 1394
' Свойство AdapterTypeId может быть неприменимо
'ко всем перечисленным в классе сетевым адаптерам.
' Только Windows NT.
'Параметр bShowAll указывает отображать ли все найденные
'адаптеры или только те, тип которых указан в параметре
'AdapterType.
'Значения: True - отображать все, False - отображать только
'заданные параметром AdapterType
bShowAll=true
'Ethernet 802.3 (установим тип адаптера)
AdapterType=0
'Установим отображение системных(виртуальных) адаптеров
'(True - отображать, False - не отображать)
bShowVirtual=true
'Создадим запрос
SQuery="Select * from Win32_NetworkAdapter"
If bShowAll=False then
'Добавим в запрос тип адаптера для отбора по значению
SQuery=SQuery &" WHERE AdapterType=" & AdapterType
End if
'если не отображать системные(виртуальные) адаптеры, тогда
If not bShowVirtual Then
'добавим в запрос условие, что должны отображаться адреса
'только тех адаптеров, которые присутствуют в папке
'"соединения" т.е. не системные(виртуальные).
'Свойство NetConnectionID содержин полное название соединения,
'как оно отображается в папке "Соединения"
SQuery=SQuery & " And NetConnection>0"
End If
'получим коллекцию сетевых адаптеров
set colAdapters=WMI.Execquery(squery)
'пройдёмся по коллекции
For Each obAdapter In colAdapters
'Получим имя сетевушки
sStr=sStr & obadapter.name & vbcrlf
'sstr=sstr & "Тип адаптера: " & obadapter.adaptertypeid & vbcrlf
'sStr=sStr & "Статус устройства: "
' Select Case obAdapter.NetConnectionStatus
' case 0 '- Отключено
' sStr=sStr & "отключено" & vbcrlf
' case 1 '- Подключение
' sStr=sStr & "подключение" & vbcrlf
' case 2 '- Подключено
' sStr=sStr & "подключено" & vbcrlf
' case 3 '- Отключение
' sStr=sStr & "отключение" & vbcrlf
' case 4 '- Устройство отсутствует
' sStr=sStr & "отсутствует" & vbcrlf
' case 5 '- Аппаратное отключение
' sStr=sStr & "отключено на аппаратном уровне" & vbcrlf
' case 6 '- Аппаратный сбой
' sStr=sStr & "аппаратный сбой" & vbcrlf
' case 7 '- Носитель отключен
' sStr=sStr & "носитель (кабель) отключен" & vbcrlf
' case 8 '- Проверка подлинности
' sStr=sStr & "проверка подлинности" & vbcrlf
' case 9 '- Подлинность удостоверена
' sStr=sStr & "подлинность удостоверена" & vbcrlf
' case 10 '- Подлинность не подтверждена
' sStr=sStr & "подлинность не подтверждена" & vbcrlf
' Case Else
' sStr=sstr & "статус неизвестен..." & vbcrlf
' End select
' SQuery="Select * from Win32_SystemDriver Where Name='" & obadapter.servicename & "'"
' set Service=WMI.execquery(SQuery)
' For each observice In Service
' sStr=sStr & "Имя сервиса: " & obService.name & vbcrlf
' ' If obadapter.NetConnectionID=StopConName Then
' ' stopRes=obService.stopService()
' ' WScript.Echo StopRes
' ' End If
' next
'создадим запрос на получение коллекции настроек
SQuery="SELECT * from Win32_NetworkAdapterConfiguration " & _
"WHERE index=" & obAdapter.DeviceID
'Получим коллекцию настроек (может быть несколько...)
Set colConf=WMI.execQuery(SQuery)
'пройдёмся по коллекции
For Each obSettings In colConf
'т.к. виртуальные (системные) адаптеры не имеют IP адреса
'а может быть и имеют (фиг его знает) - то при получении
' адреса (если установлено отображение системных) -
'возникает ошибка поэтому включим подавление ошибок
On Error Resume Next
'Получим адрес сетевушки
sStr=sStr & "IP Address: " & obSettings.IPAddress(0) & vbcrlf
On Error goto 0
Next
sstr=sstr & DELIM_STRING & vbcrlf
Next
If Len (sStr)= 0 Then
sstr=sstr & "Активные сетевые адаптеры не обнаружены..."
End If
sStr=sStr & DELIM_STRING & vbcrlf & vbcrlf
GetIPaddress=sStr
End function
SeT писал(а):Я, в общем ни х*я не понял, но всё-равно спасибо за то, что постарался до меня это донести
Сейчас этот форум просматривают: Yandex-бот и гости: 51