Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
222 / 175 / 73
Регистрация: 05.11.2015
Сообщений: 533
VBS

Вывести определённую информацию о всех компьютерах в сети

05.11.2015, 13:45. Показов 2388. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо vbs скриптом вывести следующую информацию (в текстовый файл, либо в Эксель):
1. имя компьютера
2. имя пользователя
3. ip адрес компьютера

Возможно ли такое осуществить?.буду признателен и благодарен за помощь. Заранее большое спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2015, 13:45
Ответы с готовыми решениями:

Вывести на экран информацию обо всех компьютерах, отсортированную по цене
1. С клавиатуры вводится информация о компьютерах: марка, производитель, цена. Вывести на экран информацию обо всех компьютерах,...

Настройка сети на всех компьютерах
Вобщем такая проблема. Есть 1 ситемник и бук На системнике 2 сетевухи. На одной из них лан модем, другая понятно на бук. Полазав тут по...

Ошибка 103 на всех компьютерах в сети
При заходе на некоторые сайты, вылезает ошибка 103 (веб-страница по адресу ....,возможно, временно недоступна или постоянно перемещена по...

7
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
05.11.2015, 17:58
В принципе, возможно. На практике результат будет зависеть от ряда исходных условий.
0
222 / 175 / 73
Регистрация: 05.11.2015
Сообщений: 533
06.11.2015, 08:41  [ТС]
Dmitrii, каких условий?
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
06.11.2015, 10:51
Если в качестве инструмента решения задачи использовать только штатные средства "Окон", то минимально необходимо следующее:
- возможность удалённого подключения к станциям;
- достаточные полномочия для использования WMI на станциях (в рамках текущей задачи обычно - полномочия локального администратора);
- ОС новее, чем Win 2000.
0
222 / 175 / 73
Регистрация: 05.11.2015
Сообщений: 533
06.11.2015, 11:00  [ТС]
Dmitrii, всё, что вы перечислили есть.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
06.11.2015, 11:59
1. Домен, рабочая группа или "смесь"?
2. Если полностью рабочая группа, то есть ли DNS-сервер, если нет, то откуда возьмётся список имён станций?
3. Используется ли DHCP?
4. Используются ли терминальные серверы? Если используются, то нужен ли список сеансов на них?

Ну и главное: предполагаемая "помощь" - это обобщённые консультации с небольшими примерами или вариант - полностью готовый сценарий "из коробки"?
0
222 / 175 / 73
Регистрация: 05.11.2015
Сообщений: 533
06.11.2015, 12:39  [ТС]
1. Домен
2. DNS-сервер есть
3. DHCP есть
4. нет

а про главное - я прошу именно помощи,с небольшими примерами, а не готовый вариант.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
07.11.2015, 06:08
Лучший ответ Сообщение было отмечено magirus как решение

Решение

Общий алгоритм:
1) составить список имён станций на основе данных из AD (удобнее всего использовать для этого ActiveX Data Object - ADO);
2) проверить доступность станций и (если с работой DNS-сервера в домене всё в порядке) получить список IP-адресов станций (вполне годится сочетание собственного инструментария WSH и утилиты PING.EXE);
3) доступные станции опросить на предмет наличия открытого сеанса пользователя (удобнее всего использовать для этого WMI).

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

Примеры.
1. Составление списка не отключенных "учёток" станций домена, ОС которых определена, не является серверной или 2000.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Dim objRoot, strDomain, strTemp, blnTemp
Dim objConnection, objCommand, objRSet
Const ADS_SCOPE_SUBTREE = 2
Const ADS_UF_ACCOUNTDISABLE = 2
 
Set objRoot = GetObject("LDAP://RootDSE")
strDomain = objRoot.Get("DefaultNamingContext")
Set objRoot = Nothing
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "SELECT cn,userAccountControl,operatingSystem FROM 'LDAP://" & strDomain & "' WHERE objectCategory='Computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRSet = objCommand.Execute
objRSet.MoveFirst
Do
    If Not (objRSet.Fields("userAccountControl").Value AND ADS_UF_ACCOUNTDISABLE) Then
        strTemp = objRSet.Fields("operatingSystem").Value
        If Not IsNull(strTemp) Then
            If InStr(1, strTemp, "server", vbTextCompare) = 0 And InStr(1, strTemp, "2000", vbTextCompare) = 0 Then
                WScript.Echo objRSet.Fields("cn").Value & " -> " & strTemp
            End If
        End If
    End If
    objRSet.MoveNext
Loop While Not objRSet.EOF
Set objRSet = Nothing: Set objCommand = Nothing
objConnection.Close: Set objConnection = Nothing
WScript.Quit 0


2. Проверка доступности заданной станции с помощью утилиты PING.EXE.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim objShell, objExec, objOutStream, strWS, strTemp, intLBracket, intRBracket, strIP
 
strWS = "anycomputer"
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping -n 1 -w 130 " & strWS)
Set objOutStream = objExec.StdOut
strTemp = vbNullString
While Not objOutStream.AtEndOfStream
    strTemp = strTemp & Trim(objOutStream.ReadLine)
Wend
intLBracket = InStr(1, strTemp, "[")
If intLBracket > 0 Then
    intRBracket = InStr(1, strTemp, "]")
    strIP = Mid(strTemp, intLBracket + 1, intRBracket - intLBracket - 1)
    If InStr(1, strTemp, "TTL", vbTextCompare) > 0 Then
        WScript.Echo "[ + ] " & strWS & " = " & strIP
    Else
        WScript.Echo "[ - ] " & strWS & " = " & strIP
    End If
End If
WScript.Quit 0


3. Реализованный в виде функции запрос на обнаружение открытого сценария на заданной станции.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Dim strWS, intStatus, strUser
 
strWS = "anycomputer"
Dim strWS, strUser, intStatus
 
strUser = Logged_Session(strWS, intStatus)
If intStatus >= 0 Then
    WScript.Echo strWS & " -> "  & strUser
Else
    WScript.Echo strWS & " -> " & strUser
End If
WScript.Quit 0
 
'======
 
Function Logged_Session(strComputer, intStat)
Dim objWMI, objCollection, objItem, strName, strTemp
Dim arrParameters, strRegShell, strRegUser, strRegDomain, i
 
strName = vbNullString
On Error Resume Next
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!" & strComputer & "\root\cimv2")
If Err.Number = 0 Then
    Set objCollection = objWMI.ExecQuery("SELECT UserName FROM Win32_ComputerSystem")
    If Err.Number = 0 Then
        For Each objItem In objCollection
            If Err.Number = 0 Then
                strName = objItem.UserName
                If IsNull(strName) Then
                    strName = "сеанс не обнаружен"
                    intStat = 2
                Else
                    intStat = 0
                End If
            Else
                Err.Clear
                strName = "неидентифицированный сеанс"
                intStat = 1
            End If
        Next
        Set objItem = Nothing
    Else
        Err.Clear
        strName = "не удалось выполнить запрос"
        intStat = -1
    End If
    Set objCollection = Nothing
Else
    Err.Clear
    strName = "подключение не разрешено"
    intStat = -1
End If
Set objWMI = Nothing
On Error GoTo 0
Logged_Session = strName
End Function
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2015, 06:08
Помогаю со студенческими работами здесь

В зависимости от того, какая фигура вводится, вывести определённую информацию о ней
Задана одна из геометрических фигур: прямоугольник, треугольник или круг. Фигуры задаются разными способами: прямоугольник – двумя...

Настройка интеренета на всех компьютерах в локальной сети
Добрый день уважаемые форумчани. Вот на днях мне отдали в подчинение компьютерный класс и поставили задание первым делом настроить сеть, и...

На всех компьютерах в сети и флешках вирус IMG001.EXE
На всех компьютерах в сети и флешках появился вирус IMG001.EXE, который приходит из C:\Users\ххх\AppData\Roaming\NsCpuCNMiner Свободно...

Принтер в сети работает на всех компьютерах, кроме одного
Имеется локальный принтер HP Laser Jet 1000, с общим доступом по сети, печать проходит со всех компьютеров кроме одного, с этого...

По заданным в файле исходным данным вывести информацию о компьютерах
Здравствуйте, имеется такая задача: Написать приложение, которое по заданным в файле исходным данным выводит информацию о компьютерах....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru