Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Изменение скрипта по сбору инфы по железу

Ответить
Настройки темы
VBS/WSH/JS - Изменение скрипта по сбору инфы по железу

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Народ, поможите, сам со скриптами никак, есть скрипт по сбору инфы об аппаратном обеспечении компа, за основу взят скрипт Павла Железнова, он выдает отчет такого вида:

Секция отчета;Параметр;Номер экземпляра;Значение
Компьютер;Дата проверки;1;13.09.2011 17:33:09
Компьютер;UUID;1;03000200-0400-0500-0006-000700080009
Компьютер;Сетевое имя;1;Zхххххххххх
Компьютер;Домен;1;W2K3
Компьютер;Владелец;1;Zхххххххххх
Компьютер;Текущий пользователь;1;Zхххххххххх\Zхххххххххх
Компьютер;Объем памяти (Мб);1;1719
Операционная система;Наименование;1;Microsoft Windows 7 Максимальная
Операционная система;Версия;1;6.1.7601
Операционная система;Обновление;1;Service Pack 1
Операционная система;Зарегистрированный пользователь;1;Zхххххххххх
Операционная система;Серийный номер;1;ххххххххххххххххххххххххххххх
Операционная система;Дата установки;1;24.03.2011
Материнская плата;Производитель;1;ASRock
Материнская плата;Наименование;1;H55M-LE
BIOS;Производитель;1;American Megatrends Inc.
BIOS;Наименование;1;Default System BIOS
BIOS;Версия;1;P1.00
BIOS;Серийный номер;1;To Be Filled By O.E.M.
Процессор;Наименование;1;Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz
Процессор;Описание;1;x64 Family 6 Model 37 Stepping 2
Процессор;Частота (МГц);1;2933
Процессор;Частота FSB (МГц);1;133
Процессор;Размер L2-кеша (кб);1;1024
Процессор;Разъем;1;CPUSocket
Модуль памяти;Размер (Мб);1;2048
Модуль памяти;Размещение;1;DIMM0
Диск;Наименование;1;Hitachi HDS721050CLA362 ATA Device
Диск;Размер (Гб);1;466
Диск;Интерфейс;1;IDE
Логический диск;Наименование;1;C:
Логический диск;Файловая система;1;NTFS
Логический диск;Размер (Гб);1;100
Логический диск;Свободно (Гб);1;71
Логический диск;Серийный номер;1;F43F226F
Логический диск;Наименование;2;D:
Логический диск;Файловая система;2;NTFS
Логический диск;Размер (Гб);2;366
Логический диск;Свободно (Гб);2;174
Логический диск;Серийный номер;2;4D360F39
CD-привод;Наименование;1;ATAPI iHAS124 Y ATA Device
Видеоконтроллер;Наименование;1;Intel(R) HD Graphics
Видеоконтроллер;Объем памяти (Мб);1;732
Видеоконтроллер;Видеопроцессор;1;Intel(R) HD Graphics (Core i3)
Видеоконтроллер;Режим работы;1;1440 x 900 x 4294967296 colors
Видеоконтроллер;Дата драйвера;1;11.02.2011
Видеоконтроллер;Версия драйвера;1;8.15.10.2302
Монитор;Наименование;;AOC/919W
Монитор;Серийный номер;;AQGA9HA030354
Сетевой адаптер;Наименование;1;Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)
Сетевой адаптер;Тип;1;Ethernet 802.3
Сетевой адаптер;MAC-адрес;1;00:25:22:32:31:48
Звуковое устройство;Наименование;1;Устройство с поддержкой High Definition Audio
Звуковое устройство;Наименование;2;Устройство с поддержкой High Definition Audio
Принтер;Наименование;1;Xerox Phaser 3117
Принтер;Порт;1;USB001
Принтер;Наименование;2;HP Universal Printing PCL 6
Принтер;Порт;2;USB001
Клавиатура;Наименование;1;Enhanced (101- or 102-key)
Клавиатура;Описание;1;Стандартная клавиатура PS/2
Мышь;Наименование;1;USB-устройство ввода


а нужно такого:

Системный блок ASRock;H55M-LE/Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz/2048/Hitachi HDS721050CLA362 ATA Device;466/ATAPI iHAS124 Y ATA Device/Intel(R) HD Graphics;732/Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC
Монитор AOC/919W Серийный номер AQGA9HA030354
Принтер Xerox Phaser 3117
Клавиатура Стандартная клавиатура PS/2
Мышь USB-устройство ввода


помогите пожалуйста.

если кто то сможет что бы выдергивался серийник принтера, буду премного благодарен

скрипт:

'== НАСТРОЙКИ

'режим работы
'Const SILENT = False 'тихий режим отключен, будет запрошено имя компьютера
Const SILENT = True 'режим отчета о локальном компьютере без вывода диалогов

'где сохранять отчет
Const DATA_DIR = "\Report\Invent\comp\" 'локальный каталог + "\" в конце
'Const DATA_DIR = "\\ххх.ххх.ххх.ххх\Report$\Invent\comp\" 'сетевой ресурс + "\" в конце

'прочее
Const TITLE = "Инвентаризация компьютеров" 'заголовок диалоговых окон
Const DATA_EXT = ".txt" 'расширение файла отчета
Const HEAD_LINE = True 'выводить заголовки в первой строке CSV-файла

'не завершать скрипт аварийно
'закомментировать на время отладки
On Error Resume Next

'== ВЫПОЛНЕНИЕ

'объект для доступа к файловой системе
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

'объект WMI
Dim wmio

'файл отчета
Dim tf

'узнать имя локального компьютера
Dim nwo, comp
Set nwo = CreateObject("WScript.Network")
comp = LCase(nwo.ComputerName)

'запросить имя удаленного компьютера
If Not SILENT Then
comp = InputBox("Введите имя компьютера:", TITLE, comp)
'проверить доступность компьютера
If Unavailable(comp) Then
MsgBox "Компьютер недоступен:" & vbCrLf & comp, vbExclamation, TITLE
comp = ""
End If
End If

'провести инвентаризацию
If Len(comp) > 0 Then InventComp(comp)

'если ошибка
If Len(Err.Description) > 0 Then _
If Not SILENT Then MsgBox comp & vbCrLf & "Ошибка:" & vbCrLf & Err.Description, vbExclamation, TITLE

'== ПОДПРОГРАММЫ

'инвентаризация компьютера, заданного сетевым именем или IP-адресом
'сохранение отчета с указанным именем
Sub InventComp(compname)

Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & compname & "\Root\CIMV2")

'некоторые WMI-классы поддерживаются не во всех версиях Windows
Dim build
build = BuildVersion()

'файл отчета
Set tf = fso.CreateTextFile(DATA_DIR & compname & DATA_EXT, True)

'первая строка - заголовки
If HEAD_LINE Then tf.WriteLine "Секция отчета;Параметр;Номер экземпляра;Значение"

'дата проверки
tf.WriteLine "Компьютер;Дата проверки;1;" & Now

Log "Win32_ComputerSystemProduct", _
"UUID", "", _
"Компьютер", _
"UUID"

Log "Win32_ComputerSystem", _
"Name,Domain,PrimaryOwnerName,UserName,TotalPhysicalMemory", "", _
"Компьютер", _
"Сетевое имя,Домен,Владелец,Текущий пользователь,Объем памяти (Мб)"

Log "Win32_OperatingSystem", _
"Caption,Version,CSDVersion,Description,RegisteredUser,SerialNumber,Organization,InstallDate", "", _
"Операционная система", _
"Наименование,Версия,Обновление,Описание,Зарегистрированный пользователь,Серийный номер,Организация,Дата установки"

Log "Win32_BaseBoard", _
"Manufacturer,Product,Version,SerialNumber", "", _
"Материнская плата", _
"Производитель,Наименование,Версия,Серийный номер"

Log "Win32_BIOS", _
"Manufacturer,Name,SMBIOSBIOSVersion,SerialNumber", "", _
"BIOS", _
"Производитель,Наименование,Версия,Серийный номер"

'не определяется Core 2 в XP SP2, см. http://support.microsoft.com/kb/953955
Log "Win32_Processor", _
"Name,Caption,CurrentClockSpeed,ExtClock,L2CacheSize,SocketDesignation,UniqueId", "", _
"Процессор", _
"Наименование,Описание,Частота (МГц),Частота FSB (МГц),Размер L2-кеша (кб),Разъем,UID"

Log "Win32_PhysicalMemory", _
"Capacity,Speed,DeviceLocator", "", _
"Модуль памяти", _
"Размер (Мб),Частота,Размещение"

'пропускаются USB-диски
Log "Win32_DiskDrive", _
"Model,Size,InterfaceType", "InterfaceType <> 'USB'", _
"Диск", _
"Наименование,Размер (Гб),Интерфейс"

'только локальные диски
'пропускаются USB-диски, размер которых обычно NULL
Log "Win32_LogicalDisk", _
"Name,FileSystem,Size,FreeSpace,VolumeSerialNumber", "DriveType = 3 AND Size IS NOT NULL", _
"Логический диск", _
"Наименование,Файловая система,Размер (Гб),Свободно (Гб),Серийный номер"

Log "Win32_CDROMDrive", _
"Name", "", _
"CD-привод", _
"Наименование"

'только для XP/2003 и выше
'пропускаются "двойники", имеющие в названии слово "Secondary"
If build >= 2600 Then
Log "Win32_VideoController", _
"Name,AdapterRAM,VideoProcessor,VideoModeDescription,DriverDate,DriverVersion", "NOT (Name LIKE '%Secondary')", _
"Видеоконтроллер", _
"Наименование,Объем памяти (Мб),Видеопроцессор,Режим работы,Дата драйвера,Версия драйвера"
Else 'для Windows 2000
Log "Win32_VideoController", _
"Name,AdapterRAM,VideoProcessor,VideoModeDescription,DriverDate,DriverVersion", "", _
"Видеоконтроллер", _
"Наименование,Объем памяти (Мб),Видеопроцессор,Режим работы,Дата драйвера,Версия драйвера"
End If

' Log "Win32_DesktopMonitor", _
' "PNPDeviceID", "", _
' "Монитор", _
' "Наименование (PNP)"

strComputer="."
dim strarrRawEDID()
intMonitorCount=0
Const HKLM = &H80000002

Set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "/root/default:StdRegProv")
sBaseKey = "SYSTEM\CurrentControlSet\Enum\DISPLAY\"

iRC = oRegistry.EnumKey(HKLM, sBaseKey, arSubKeys)
For Each sKey In arSubKeys
sBaseKey2 = sBaseKey & sKey & "\"
iRC2 = oRegistry.EnumKey(HKLM, sBaseKey2, arSubKeys2)
For Each sKey2 In arSubKeys2
oRegistry.GetMultiStringValue HKLM, sBaseKey2 & sKey2 & "\", "HardwareID", sValue
for tmpctr=0 to ubound(svalue)
if lcase(left(svalue(tmpctr),8))="monitor\" then
sBaseKey3 = sBaseKey2 & sKey2 & "\"
iRC3 = oRegistry.EnumKey(HKLM, sBaseKey3, arSubKeys3)
For Each sKey3 In arSubKeys3
if skey3="Control" then
oRegistry.GetBinaryValue HKLM, sbasekey3 & "Device Parameters\", "EDID", arrintEDID
if vartype(arrintedid) <> 8204 then
strRawEDID="EDID Not Available"
else
for each bytevalue in arrintedid
strRawEDID=strRawEDID & chr(bytevalue)
next
end if

redim preserve strarrRawEDID(intMonitorCount)
strarrRawEDID(intMonitorCount)=strRawEDID
intMonitorCount=intMonitorCount+1
end if
next
end if
next

Next
Next

dim arrMonitorInfo()
redim arrMonitorInfo(intMonitorCount-1,5)
dim location(3)
for tmpctr=0 to intMonitorCount-1
if strarrRawEDID(tmpctr) <> "EDID Not Available" then
location(0)=mid(strarrRawEDID(tmpctr),&H36+1,18)
location(1)=mid(strarrRawEDID(tmpctr),&H48+1,18)
location(2)=mid(strarrRawEDID(tmpctr),&H5a+1,18)
location(3)=mid(strarrRawEDID(tmpctr),&H6c+1,18)


strSerFind=chr(&H00) & chr(&H00) & chr(&H00) & chr(&Hff)

strMdlFind=chr(&H00) & chr(&H00) & chr(&H00) & chr(&Hfc)

intSerFoundAt=-1
intMdlFoundAt=-1
for findit = 0 to 3
if instr(location(findit),strSerFind)>0 then
intSerFoundAt=findit
end if
if instr(location(findit),strMdlFind)>0 then
intMdlFoundAt=findit
end if
next


if intSerFoundAt<>-1 then
tmp=right(location(intSerFoundAt),14)
if instr(tmp,chr(&H0a))>0 then
tmpser=trim(left(tmp,instr(tmp,chr(&H0a))-1))
else
tmpser=trim(tmp)
end if
if left(tmpser,1)=chr(0) then tmpser=right(tmpser,len(tmpser)-1)
else
tmpser="Serial Number Not Found in EDID data"
end if

if intMdlFoundAt<>-1 then
tmp=right(location(intMdlFoundAt),14)
if instr(tmp,chr(&H0a))>0 then
tmpmdl=trim(left(tmp,instr(tmp,chr(&H0a))-1))
else
tmpmdl=trim(tmp)
end if
if left(tmpmdl,1)=chr(0) then tmpmdl=right(tmpmdl,len(tmpmdl)-1)
else
tmpmdl="Model Descriptor Not Found in EDID data"
end if

tmpmfgweek=asc(mid(strarrRawEDID(tmpctr),&H10+1,1))

tmpmfgyear=(asc(mid(strarrRawEDID(tmpctr),&H11+1,1)))+1990

tmpmdt=month(dateadd("ww",tmpmfgweek,datevalue("1/1/" & tmpmfgyear))) & "/" & tmpmfgyear

tmpEDIDMajorVer=asc(mid(strarrRawEDID(tmpctr),&H12+1,1))


tmpEDIDRev=asc(mid(strarrRawEDID(tmpctr),&H13+1,1))


tmpver=chr(48+tmpEDIDMajorVer) & "." & chr(48+tmpEDIDRev)

tmpEDIDMfg=mid(strarrRawEDID(tmpctr),&H08+1,2)
Char1=0 : Char2=0 : Char3=0
Byte1=asc(left(tmpEDIDMfg,1))
Byte2=asc(right(tmpEDIDMfg,1))
if (Byte1 and 64) > 0 then Char1=Char1+16
if (Byte1 and 32) > 0 then Char1=Char1+8
if (Byte1 and 16) > 0 then Char1=Char1+4
if (Byte1 and 8) > 0 then Char1=Char1+2
if (Byte1 and 4) > 0 then Char1=Char1+1


if (Byte1 and 2) > 0 then Char2=Char2+16
if (Byte1 and 1) > 0 then Char2=Char2+8

if (Byte2 and 128) > 0 then Char2=Char2+4
if (Byte2 and 64) > 0 then Char2=Char2+2
if (Byte2 and 32) > 0 then Char2=Char2+1

Char3=Char3+(Byte2 and 16)
Char3=Char3+(Byte2 and 8)
Char3=Char3+(Byte2 and 4)
Char3=Char3+(Byte2 and 2)
Char3=Char3+(Byte2 and 1)
tmpmfg=chr(Char1+64) & chr(Char2+64) & chr(Char3+64)

tmpEDIDDev1=hex(asc(mid(strarrRawEDID(tmpctr),&H0a+1,1)))
tmpEDIDDev2=hex(asc(mid(strarrRawEDID(tmpctr),&H0b+1,1)))
if len(tmpEDIDDev1)=1 then tmpEDIDDev1="0" & tmpEDIDDev1
if len(tmpEDIDDev2)=1 then tmpEDIDDev2="0" & tmpEDIDDev2
tmpdev=tmpEDIDDev2 & tmpEDIDDev1

arrMonitorInfo(tmpctr,0)=tmpmfg
arrMonitorInfo(tmpctr,1)=tmpdev
arrMonitorInfo(tmpctr,2)=tmpmdt
arrMonitorInfo(tmpctr,3)=tmpser
arrMonitorInfo(tmpctr,4)=tmpmdl
arrMonitorInfo(tmpctr,5)=tmpver
end if
next

for tmpctr=0 to intMonitorCount-1
if arrMonitorInfo(tmpctr,3) <> "" Then
tf.WriteLine "Монитор;Наименование;;" & arrMonitorInfo(tmpctr,0) & "/" & arrMonitorInfo(tmpctr,4)
tf.WriteLine "Монитор;Серийный номер;;" & arrMonitorInfo(tmpctr,3)
End If
next
'только для XP/2003 и выше
'пропускаются отключенные сетевые адаптеры, в том числе минипорты
'пропускаются виртуальные адаптеры VMware
If build >= 2600 Then
Log "Win32_NetworkAdapter", _
"Name,AdapterType,PermanentAddress,MACAddress", "NetConnectionStatus > 0 AND NOT (Name LIKE 'VMware%')", _
"Сетевой адаптер", _
"Наименование,Тип,IP-адрес,MAC-адрес"
Else 'для Windows 2000
Log "Win32_NetworkAdapter", _
"Name,PermanentAddress,MACAddress", "", _
"Сетевой адаптер", _
"Наименование,IP-адрес,MAC-адрес"
End If

Log "Win32_SoundDevice", _
"Name", "", _
"Звуковое устройство", _
"Наименование"

Log "Win32_SCSIController", _
"Name", "", _
"SCSI контроллер", _
"Наименование"

'только для XP/2003 и выше
'пропускаются сетевые принтеры
'условия "Local = True Or Network = False" недостаточно для принт-серверов, поэтому проверяется порт
If build >= 2600 Then
Log "Win32_Printer", _
"Name,PortName,ShareName", "(Local = True OR Network = False) AND (PortName LIKE '%USB%' OR PortName LIKE '%LPT%')", _
"Принтер", _
"Наименование,Порт,Сетевое имя"
End If

Log "Win32_PortConnector", _
"ExternalReferenceDesignator,InternalReferenceDesignator", "", _
"Разъем порта", _
"Внешний,Внутренний"

Log "Win32_Keyboard", _
"Name,Description", "", _
"Клавиатура", _
"Наименование,Описание"

Log "Win32_PointingDevice", _
"Name", "", _
"Мышь", _
"Наименование"

'закрыть файл
tf.Close
If Not SILENT Then MsgBox "Отчет сохранен в файл:" & vbCrLf & DATA_DIR & compname & DATA_EXT, vbInformation, TITLE

End Sub

'составить WQL-запрос, выполнить и записать строку в CSV-файл
'входные параметры:
'from - класс WMI
'sel - свойства WMI, через запятую
'where - условие отбора или пустая строка
'sect - соответствующая секция отчета
'param - соответствующие параметры внутри секции отчета, через запятую
'для отображения в кратных единицах, нужно их указать в скобках
Sub Log(from, sel, where, sect, param)

Const RETURN_IMMEDIATELY = 16
Const FORWARD_ONLY = 32

Dim query, cls, item, prop
query = "Select " & sel & " From " & from

If Len(where) > 0 Then query = query & " Where " & where
Set cls = wmio.ExecQuery(query,, RETURN_IMMEDIATELY + FORWARD_ONLY)

Dim props, names, num, value, a
props = Split(sel, ",")
names = Split(param, ",")

num = 1 'номер экземпляра
For Each item In cls
For i = 0 To UBound(props)

'взять значение
Set prop = item.Properties_(props(i))
value = prop.Value

'без проверки на Null возможнен вылет с ошибкой
If IsNull(value) Then
value = ""

'если тип данных - массив, собрать в строку
ElseIf IsArray(value) Then
value = Join(value,",")

'если указана кратная единица измерения, перевести значение
ElseIf Right(names(i), 4) = "(Мб)" Then
value = CStr(Round(value / 1024 ^ 2))
ElseIf Right(names(i), 4) = "(Гб)" Then
value = CStr(Round(value / 1024 ^ 3))
ElseIf Right(names(i), 5) = "(PNP)" Then
'value = "DISPLAY\AOC1919\5&2BC3DC50&0&UID5243137"
a = Split(value, "\", 3)
If UBound(a) > 0 Then
value = a(1)
Else
value = "?"
End If

'если тип данных - дата, преобразовать в читаемый вид
ElseIf prop.CIMType = 101 Then
value = ReadableDate(value)
End If

'вывести в файл непустое значение, заменить спецсимвол ";"
value = Trim(Replace(value, ";", "_"))
If Len(value) > 0 Then tf.WriteLine sect & ";" & names(i) & ";" & num & ";" & value

Next 'i

'перейти к следующему экземпляру
num = num + 1
Next 'item

End Sub

'преобразование даты формата DMTF в читаемый вид (ДД.ММ.ГГГГ)
'http://msdn.microsoft.com/en-us/library/aa389802.aspx
Function ReadableDate(str)
'объект недоступен в Windows 2000, поэтому см. далее
' Dim dto
' Set dto = CreateObject("WbemScripting.SWbemDateTime")
' dto.Value = str
' ReadableDate = dto.GetVarDate(True)
ReadableDate = Mid(str, 7, 2) & "." & Mid(str, 5, 2) & "." & Left(str, 4)
End Function

'узнать версию (билд) WMI-сервера
'вернуть целое число
Function BuildVersion()
Dim cls, item
Set cls = wmio.ExecQuery("Select BuildVersion From Win32_WMISetting")
For Each item In cls
BuildVersion = CInt(Left(item.BuildVersion, 4))
Next
End Function

'проверить доступность компьютера в сети
'вернуть True, если адрес недоступен
Function Unavailable(addr)
Dim wmio, ping, p
Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}")
Set ping = wmio.ExecQuery("SELECT StatusCode FROM Win32_PingStatus WHERE Address = '" & addr & "'")
For Each p In ping
If IsNull(p.StatusCode) Then
Unavailable = True
Else
Unavailable = (p.StatusCode <> 0)
End If
Next
End Function

Отправлено: 14:44, 13-09-2011

 

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


что так никто и не поможет?

Отправлено: 05:50, 21-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Да что блин, нет никого умного что ли ?

Отправлено: 18:54, 26-09-2011 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Изменение скрипта по сбору инфы по железу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Скрипт по сбору инфы о железе (помогите добавить нужное) ZeVSalt Скриптовые языки администрирования Windows 11 28-09-2020 10:53
CMD/BAT - изменение скрипта для подключения к интернету njg Скриптовые языки администрирования Windows 4 21-08-2009 03:42
Изменение интерфейса скрипта RuLe Вебмастеру 3 27-02-2007 23:07
Изменение раздела, создание нового, без потери инфы, в другой Ф.С. bruno Microsoft Windows 2000/XP 7 02-01-2007 12:55
Изменение скрипта установки программы biosss Автоматическая установка приложений 3 12-04-2006 11:49




 
Переход