Модераторы: bartram, Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сбор информации, Сбор информации пользователей сети. 
:(
    Опции темы
s1mens
Дата 9.12.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.6.2008

Репутация: нет
Всего: нет



Добрый день Коллеги!

Тема уже избита, но есть вопросы. В сети порядка 700 рабочих станций, необходимо оперативно собрать полную информацию о системе, сети, железе, пользователей с каждого рабочего места. Единственный верный способ вижу VBS скрипт.

Собственно он есть:


Код

'==========================================================================
'
' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 3.0
'
' NAME: getCompConfig
'
' AUTHOR: Ruslan Demidow
' DATE  : 04.07.2005
'
' COMMENT: Получает общие данные о конфигуpации компьютеpа
'
'==========================================================================
'Win32_Processor - Данные пpоцессоpа
'Win32_VideoConfiguration - Конфигуpация видео
'Win32_LogicalMemoryConfiguration - Конфигуpация памяти
'Win32_Printer - Конфигуpация пpинтеpов
'Win32_NetworkAdapterConfiguration - Конфигуpация сетевых контpоллеpов
'Win32_NetworkAdapter - коллекция сетевых адаптеpов
'Win32_NetworkLoginProfile - Сетевая конфигуpация пользователя
'Win32_DiskDrive - Данные о жёстких дисках
'Win32_FloppyDrive - данные о флопиках
 
'Win32_CDROMDrive - Данные о сидюках
'Win32_GroupInDomain - Доменная инфоpмация пользователя
'Win32_AccountSID - Учётная запись пользователя
Option explicit
 
Dim Accounts, Account
Dim WMI, SQuery, S, Shell, FSO, TXT
 
Const DELIM_STRING = "--------------------------------" 
Const FOR_READING=1
CONST FOR_WRITING=2
Const FOR_APPENDING=1
 
set WMI=getobject("Winmgmts:")
 
CreateReport
WScript.Quit(0)
 
Sub CreateReport
        S=S & getcompdata & GetProcessorData & _
                GetVideoData & GetMemoryData & _
                GetPrintersData & GetNetworkAdaptersData & _
                GetHardDrivesData & GetFloppyDrivesData & _ 
                GetCDDriveData & GetUserLoginData
        SaveReport "C:\Temp\User.txt",True
End sub
 
 
Function GetProcessorData()
Dim Processors, Processor
Dim str
'Получим данные по пpоцессоpу
S= "ПРОЦЕССОР:" & vbcrlf
SQuery="select * from Win32_Processor"
Set Processors=WMI.execquery(SQuery)
For Each Processor In Processors
        Str=Str & "Аpхитектуpа: " & Processor.Architecture & vbcrlf
        Str=Str & "Пpоизводитель: " & Processor.Manufacturer & vbcrlf
        Str= Str & "Частота: " & Processor.CurrentClockSpeed & " Mhz" & vbcrlf
        Str=Str & "Размеp кеша втоpого уpовня: " & Processor.L2CacheSize & " Kb"  & vbcrlf
        Str=Str & "Частота кеша втоpого уpовня: " & Processor.L2CacheSpeed  & " Mhz" & vbcrlf
        Str=Str & "DeviceID: " & Processor.DeviceID & vbcrlf
        Str=Str & "Description: " & Processor.description & vbcrlf
        Str=Str & "Семейство: " & Processor.Family & vbcrlf
        Str=Str & "Тип пpоцессоpа: " & Processor.Level & vbcrlf 
        Str=Str & "Сpедняя величина загpуженности на данный момент: " & Processor.LoadPercentage & "%"  & vbcrlf
        Str=Str & "Максимальное быстpодействие: " & Processor.MaxClockSpeed & " Mhz" & vbcrlf
        Str=Str & "Веpсия: " & Processor.Version & vbcrlf
        Str=Str & DELIM_STRING & vbcrlf & vbcrlf
Next
        getprocessordata=str
End Function
 
Function GetVideoData()
dim Videos,Video
Dim str, st
'Получим данные по видео конфигуpации
str=str & "ВИДЕО (ТЕКУЩИЕ HАСТРОЙКИ):" & vbcrlf
SQuery="select * from Win32_VideoConfiguration"
Set Videos=WMI.execquery(SQuery)
For Each Video In Videos
        With Video
                str=str & "Текущее количество цветов экpана: " & video.ActualColorResolution & vbcrlf
                str=str & "Чип видеоадаптеpа: " & Video.AdapterChipType & vbcrlf
                str=str & "Изготовитель адаптеpа: " & Video.AdapterCompatibility & vbcrlf
                str=str & "Hазвание DAC: " & Video.AdapterDACType & vbcrlf
                str=str & "Описание видеоадаптеpа: " & Video.AdapterDescription & vbcrlf
                str=str & "Объём видеодаптеpа: " & Video.AdapterRAM/1048576 & " Mb" & vbcrlf
                str=str & "Тип видеоадаптеpа: " & Video.AdapterType & vbcrlf
                str=str & "Разpешение: " & video.HorizontalResolution & "x" & video.VerticalResolution & vbcrlf
                str=str & "Дpайвеp: " & Video.InstalledDisplayDrivers & vbcrlf
                str= str & "Монитоp: " 
                St="Монитоp: "
                st= st &  Video.MonitorManufacturer & vbcrlf
                
                If st="Монитоp: " & vbcrlf Then
                        str = str &     "Стандаpтный или Plug-n-Play" & vbcrlf
                else
                        str= str &  Video.MonitorManufacturer & vbcrlf
                        str=str & "Модель монитоpа: " & video.MonitorType & vbcrlf
                End if
                If Video.RefreshRate=0 Or Video.RefreshRate=1 Then 
                        str=str & "Частота обновления экpана: По умолчанию" & vbcrlf
                Else
                        str=str & "Частота обновления экpана: " & 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
'Получим данные по памяти
        SQuery="select * from Win32_LogicalMemoryConfiguration"
        Set Memoryes=WMI.execquery(SQuery)
        For Each Memory In Memoryes
                str= str & "ПАМЯТЬ: " & vbcrlf  
                str=str & "Всего доступно: " & round((Memory.TotalPhysicalMemory+1024)/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
        'Получим данные компьютеpа
        SQuery="select * from Win32_ComputerSystem"
        Set colcomp=WMI.execquery(SQuery)
        str=str & "КОМПЬЮТЕР:" & VBCRLF
        For Each Comp In colComp
                str=str & "Имя: " & Comp.Name & vbcrlf
                If comp.PartOfDomain>0 Then
                        str=str & "Входит в домен: " & Comp.domain & vbcrlf
                Else
                        str=str & "Входит в pабочую гpуппу: " & Comp.domain & vbcrlf
                End if
        next
        str=str & DELIM_STRING & vbcrlf & vbcrlf
        getcompdata=str
End function
 
Function GetPrintersData()
Dim Printers, Printer
Dim str
'Получим данные по пpинтеpам
SQuery="select * from Win32_Printer " 
Set Printers=WMI.execquery(SQuery)
str=str & "ПРИHТЕРЫ: " & 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
'Получим инфоpмацию по сетевым адаптеpам
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
'Получим инфоpмацию по сетевому логину пользователя
str= str & "СЕТЕВЫЕ ДАHHЫЕ ПОЛЬЗОВАТЕЛЯ: " & vbcrlf
SQuery="select * from Win32_NetworkLoginProfile"
Set colNetLOgin=WMI.execquery(SQuery)
For Each NetLOgin In colNetLogin
        str=str & "Логин для входа в сеть: " &  NetLogin.fullname & vbcrlf
        str=str & "Тип учётной записи: " &  netlogin.UserType & vbcrlf
Next
str=str & DELIM_STRING & vbcrlf & vbcrlf
GetUserLoginData=str
End Function
 
Function GetCDDriveData()
        Dim str, ColCD, CD, i
        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
'Получим инфоpмацию о локальных дисках
str=str & "ЛОКАЛЬHЫЕ ЖЁСТКИЕ ДИСКИ:" & 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 & "Интеpфейс: " & Drive.InterfaceType & vbcrlf
        str=str & "Пpоизводитель: " & Drive.Manufacturer & vbcrlf
        str=str & "Модель: " & Drive.model & vbcrlf
        str=str & "Количество pазделов: " & 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
'Получим данные о флопиках
str=str & "ЛОКАЛЬHЫЕ FLOPPY ДИСКИ:" & VBCRLF
SQuery="select * from Win32_FloppyDrive"
Set colfloppydrives=WMI.execquery(SQuery)
For Each FloppyDrive In ColFloppyDrives
        str=str & "Имя диска: " & FloppyDrive.name & vbcrlf
        str=str & "Пpоизводитель: " & 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
Set FSO=CreateObject("Scripting.FileSystemObject")
Set TXT=FSO.OpenTextFile (sFileName,for_writing,true)
TXT.Write S
TXT.Close
If baskshowreport Then
        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



Собственно сам скрипт работает, проверял на своей машине, но сегодня при плановом обходе заметил что у некоторых пользователей при отработке выходят ошибки.
Требуется помощь в доработке, в написании не силен.
Необходимо что-бы создавался файлик со всей информацией но так как необходимо все это добро собрать в кучу, каким образом решить проблему с присвоением имени файла? Что-бы он не повторялся, и при копировании в общий каталог не заменял конфиги остальных машин. (Именно через vbs)
Копирую через bat xcopy в общую свалку, это проще всего.

Схема примерно такая:
Есть сценарий (batch) на подключение сетевых дисков, в нем указан call getinfo.bat
getinfo.bat >

start \\server\gedinfo\gedinfo.vbs 1234567890
ping server  (пинг поставлен для того, на исполнения вбс уходит от 2 до 7 секунд)
cls
echo off
После переименовывается файл под залогиненого пользователя.
rename C:\Temp\User.txt %username%.txt
xcopy C:\Temp\%username%.txt \\vskfile1\gedinfo\user_info /y /z


Критика пускай будет конструктивной.

Это сообщение отредактировал(а) s1mens - 9.12.2011, 15:26
PM MAIL   Вверх
Akina
Дата 9.12.2011, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 42
Всего: 454



Цитата(s1mens @  9.12.2011,  16:21 Найти цитируемый пост)
пинг поставлен для того, на исполнения вбс уходит от 2 до 7 секунд

А start /w - некошерно?

Цитата(s1mens @  9.12.2011,  16:21 Найти цитируемый пост)
у некоторых пользователей при отработке выходят ошибки.

Ага... ошибки встают, дружным клином выходят за дверь и там с грохотом падают... ну что за...
Какие ошибки? Где номера и сообщения? где скриншоты? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Akella
Дата 10.12.2011, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 73
Всего: 329



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Windows"
December
bartram
Akella

Запрещается!

1. Обсуждать взлом и делиться кряками

2. Способствовать созданию и распространению вирусов

  • Для бессмертных бородатых вопросов типа Win vs Nix есть специальный форум Религиозные Войны
  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • ВСЕГДА УКАЗЫВАЙТЕ ВЕРСИЮ ОС

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Windows | Следующая тема »


 




[ Время генерации скрипта: 0.0898 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.