Понедельник, 29.04.2024
Уголок эникейщика
Меню сайта
Категории раздела
[13]
Windows (2000+)/общее [90]
Windows (ME-) [6]
Программы [71]
Mobile [2]
Скрипты [26]
Hard [7]
Android [5]
Советы от Влада [7]
Избранное

Рахни православні

Погода в Виннице
Сайт Экслера

Форум Ru.Board
CWER.ru

Hot Line - Цены
Яндекс.Маркет

Форум rutracker.org

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Скрипты

Получение информации о ПК средствами WMI

Скачать скрипт


' Три способа передачи списка ПК:
FList = "comp.list" ' 1-й способ: через текстовый файл со строками, начинающимися с ip-адресов компов
'Addresses = "192.168.0.3;192.168.0.4" ' 2-й способ: через строку с ip-адресами компов, разделёнными ;
RangeStart = "192.168.0.2" ' 3-й способ: через указание начала... 
RangeEnd = "192.168.0.7" ' ... и окончания диапазона (для применения этого способа закомментировать строку с Addresses = )

Const ForReading = 1
Const ForWriting = 2

'On Error Resume Next
If Err.Number <> 0 Then
 WScript.Echo Err.Number & ": " & Err.Description ' При возникновении ошибки - ее вывод с номером строки
 WScript.Quit ' и окончание работы скрипта
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set FFail = objFSO.OpenTextFile("not_responding.txt", ForWriting, True) ' Список ПК, которые не пингуются

If objFSO.FileExists(FList) Then ' 1-й способ
 Set FSource = objFSO.OpenTextFile("comp.list", ForReading, True)
 Do While FSource.AtEndOfStream <> True
 Addr = Trim(FSource.ReadLine)
 Pos = InStr(Addr,"//")
 If Pos <> 0 Then
 Addr = Trim(Left(Addr,Pos-2))
 End If
 Info(Addr)
 Loop
 FSource.Close
Else
 If Len(Addresses) <> 0 Then ' 2-й способ
 aAddress = Split(Addresses, ";")
 For Each Addr in aAddress
 Info(Addr)
 Next
 Else ' 3-й способ
 PosRS = InStrRev(RangeStart,".")
 PosRE = InStrRev(RangeEnd,".")
 Net = Left(RangeStart,PosRS)
 StartNum = CInt(Mid(RangeStart,PosRS+1))
 EndNum = CInt(Mid(RangeEnd,PosRE+1))
 For i = StartNum To EndNum
 Addr = Net + Trim(CStr(i))
 Info(Addr)
 Next
 End If
End If

FFail.Close
MsgBox "Сбор информации окончен" 

Sub Info(ByVal CompName)
 ' Попытка пропинговать ПК
 For Each objStatus In GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("Select * From Win32_PingStatus Where Address = '" & CompName & "'") 
 Exit For
 Next
 If IsNull(objStatus.StatusCode) or objStatus.StatusCode <> 0 Then 
 FFail.WriteLine CompName ' Пинг не удался - запись в not_responding.txt 
 Exit Sub 
 End If

 Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" + CompName + "\root\CIMV2")

 Set FTemp = objFSO.OpenTextFile(CompName+".txt", ForWriting, True) ' Запись информации в текстовый файл с названием по имени ПК 
 FTemp.WriteLine CompName + ": " + vbCrLf

 FTemp.WriteLine "Мат.плата|Процесор:"
 For Each objObject In objService.ExecQuery("SELECT * FROM Win32_BaseBoard")
 Exit For
 Next
 stro = objObject.Manufacturer + " " + objObject.Product + vbCrLf
 For Each objProc In objService.ExecQuery("SELECT * FROM Win32_Processor")
 stro = stro + objProc.SocketDesignation + " / " + Trim(objProc.Name) + vbCrLf
 Next
 FTemp.WriteLine(stro)

 FTemp.WriteLine "Монитор:"
 stro = ""
 For Each objMon In objService.ExecQuery("SELECT * FROM Win32_DesktopMonitor")
 stro = stro + objMon.Caption + vbCrLf
 Next
 FTemp.WriteLine(stro) ' Полезная информация будет только в случае установки драйверов на монитор

 FTemp.WriteLine "ОЗУ|HDD"
 stro = ""
 For Each objPhMem In objService.ExecQuery("SELECT * FROM Win32_PhysicalMemory")
 stro = stro + objPhMem.DeviceLocator + ": " + CStr(objPhMem.Capacity/1048576) + " МБ" + vbCrLf
 Next
 For Each objDisk In objService.ExecQuery("SELECT * FROM Win32_DiskDrive")
 stro = stro + objDisk.Caption + " / " + objDisk.InterfaceType + " / " + CStr(Round(objDisk.Size/1073741824,0)) + " ГБ" + vbCrLf
 Next
 FTemp.WriteLine(stro)

 FTemp.WriteLine "Использование дисков:"
 stro = ""
 ' Только для HDD
 For Each objDisk In objService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType = 3")
 pctFreeSpace = objDisk.FreeSpace / objDisk.Size
 stro = stro + objDisk.Name + " " + FormatPercent(pctFreeSpace) + vbCrLf
 Next
 FTemp.WriteLine(stro)

 FTemp.WriteLine "Видео:"
 stro = ""
 For Each objVideo In objService.ExecQuery("SELECT * FROM Win32_VideoController")
 stro = stro + objVideo.Caption + vbCrLf
 Next
 FTemp.WriteLine(stro)

 FTemp.WriteLine "Сеть:"
 stro = ""
 ' Для типа адаптера - Ethernet 802.3
 For Each objNtw In objService.ExecQuery("SELECT * FROM Win32_NetworkAdapter Where AdapterTypeID = 0")
 stro = stro + objNtw.Caption + ", MAC: " + objNtw.MACAddress + vbCrLf
 Next
 FTemp.WriteLine(stro)

 FTemp.WriteLine "ОС:"
 For Each objOS In objService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
 Exit For
 Next
 stro = objOS.Caption + " " + objOS.Version + " " + objOS.CSDVersion
 FTemp.WriteLine(stro)

 FTemp.Close
End Sub
Категория: Скрипты | Добавил: IgorDanyK (15.08.2012)
Просмотров: 1987 | Рейтинг: 0.0/0
Облако тегов
сайт программы Статьи личное разочарования Windows 1c антивирус политика почитать рекомендую Prices math ссылки english скрипты total сеть VBS
Поиск
Google

WWW на сайте
Copyright IgorDanyK © 2024
Создать бесплатный сайт с uCoz