strizhakovs Цитата: Вообщем почти все осилил, осталось только зделать WMI запросы на получение инфы о железе и о софте...Помогите с этим плз
[more]'получение имени машины
strComputer = InputBox ("Введите имя или IP-адрес компьютера", "Запрос","")
If strComputer= "" Then WScript.Quit
'объявление констант
'set constant
Const ForReading = 1
Const ForWriting = 2
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001
' указание папки для создания файла отчета
' set folder for generate report
'strPath = "d:\"
strPath = InputBox ("Введите путь для сохранения файла", "Browse","")
'определение типа и параметров процессора
'get processor properties
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
strInfo="Параметры процессора (процессоров)"
strInfo=strInfo + vbCrLf+ "===================="
For Each objItem in colItems
strInfo=strInfo + vbCrLf+ "Производитель: " & objItem.Manufacturer
strInfo=strInfo + vbCrLf+ "Модель: " & objItem.Name
Next
strInfo=strInfo + vbCrLf+ ""
strInfo=strInfo + vbCrLf+ ""
'определение видеоадаптера и параметров видеоотображения
'get video properties
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_DisplayControllerConfiguration")
For Each objItem in colItems
strInfo=strInfo + vbCrLf+ "Видеопараметры"
strInfo=strInfo + vbCrLf+ "===================="
strInfo=strInfo + vbCrLf+ "Модель видеокарты: " & objItem.Name
'strInfo=strInfo + vbCrLf+ "Setting ID: " & objItem.SettingID
strInfo=strInfo + vbCrLf+ "Видеорежим: " & objItem.VideoMode
Next
strInfo=strInfo + vbCrLf+ ""
strInfo=strInfo + vbCrLf+ ""
'определение сетевых параметров
'get network properties
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration")
strInfo=strInfo + vbCrLf+ "Оборудование доступа к сети"
strInfo=strInfo + vbCrLf+ "===================="
For Each objItem in colItems
If objItem.DNSHostName <> "" then
strInfo=strInfo + vbCrLf+ "Модель: " & objItem.Caption
'strInfo=strInfo + vbCrLf+ "Default IP Gateway: " & objItem.DefaultIPGateway
strInfo=strInfo + vbCrLf+ "Имя в сети: " & objItem.DNSHostName
'strInfo=strInfo + vbCrLf+ "IP Address: " & objItem.IPAddress
strInfo=strInfo + vbCrLf+ "MAC адрес сетевой карты: " & objItem.MACAddress
End if
strPC1 = objItem.DNSHostName
Next
strInfo=strInfo + vbCrLf+ ""
strInfo=strInfo + vbCrLf+ ""
'определение параметров жестких и сменных дисков
'get drive disk properties
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)
strInfo=strInfo + vbCrLf+ "Постоянные и сменные носители информации"
strInfo=strInfo + vbCrLf+ "===================="
For Each objItem in colItems
strInfo=strInfo + vbCrLf+ "Название: " & objItem.Description
strInfo=strInfo + vbCrLf+ "Модель: " & objItem.Caption
strInfo=strInfo + vbCrLf+ "Количество логических разделов: " & objItem.Partitions
strInfo=strInfo + vbCrLf+ "Общий размер: " & Round (objItem.Size/1000/1000) & "Mb"
strInfo=strInfo + vbCrLf+ ""
Next
strInfo=strInfo + vbCrLf+ ""
strInfo=strInfo + vbCrLf+ ""
'определение объема оперативной памяти и информации о пользователе
'get RAM memory properties and user account
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
For Each objItem in colItems
strUName = Right(objItem.UserName,6)
strInfo=strInfo + vbCrLf+ "Оперативная память"
strInfo=strInfo + vbCrLf+ "===================="
strInfo=strInfo + vbCrLf+ "Общее количество оперативной памяти: " & Round (objItem.TotalPhysicalMemory/1024/1024) & "Mb"
strInfo=strInfo + vbCrLf+ ""
strInfo=strInfo + vbCrLf+ ""
strInfo=strInfo + vbCrLf+ "Информация о пользователе"
strInfo=strInfo + vbCrLf+ "===================="
strInfo=strInfo + vbCrLf+ "PrimaryOwnerName: " & objItem.PrimaryOwnerName
strInfo=strInfo + vbCrLf+ "Полное имя пользователя: " & objItem.UserName
strInfo=strInfo + vbCrLf+ ""
Next
strInfo=strInfo + vbCrLf+ ""
strInfo=strInfo + vbCrLf+ ""
'получение списка ПО
'get PC's software
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
strInfo=strInfo + vbCrLf+ "Список установленного ПО"
strInfo=strInfo + vbCrLf+ "===================="
For Each subkey In arrSubKeys
If Left (subkey,1) <> "{" and Right (subkey,1) <> "}" Then
strInfo=strInfo + vbCrLf+ subkey
End If
Next
'запись собранной информации в файл
'write properties in report file
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\"
strValueName = "ComputerName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strPC1 = strValue
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "DefaultUserName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strUName = strValue
strPCsFile= strPC1 & "_" & strUName &".txt"
'WScript.Echo strUName
Set objTextFile = objFSO.OpenTextFile(strPath & strPCsFile, ForWriting, True)
objTextFile.WriteLine strInfo
objTextFile.Close
'WScript.echo strInfo
'отправка почтой
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "*@*"
objEmail.To = "*@*"
objEmail.Subject = "script result"
objEmail.Textbody = strPCsFile
objEmail.AddAttachment (strPath & strPCsFile)
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"*"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
WScript.Quit [/more]
скрипт работает под win98 и winXP (на остальных не проверял)
в коде закоментишь оправку почтой если она не нужна
при отправке почтой:
1 выставить адрес отправителя и получателя (можно один и тот же)
2 выставить smtp сервер через который будет уходить письмо ( ("http://schemas.microsoft.com/cdo/configuration/smtpser ") "*" )
в первом inputbox задается имя компа (если "." - localhost, можно имя просто или IP-адрес)
во втором inputbox задается путь куда сохранить текстарь с результатами
З.Ы. если кто подскажет как выбирать IP-адрес и дефолтовый Gateway буду премного благодарен, так как в этом скрипте система сильно матерится если раскоментить эти строки