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

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

Ответить
Настройки темы
VBS/WSH/JS - MAC адреса, имена Компьютеров в домене.

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


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

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


Вложения
Тип файла: zip Prgo1.zip
(1.3 Kb, 10 просмотров)
Приветсвую вас, Гуру скриптования!
Возникли серьезные затруднения , когда пришел момент написать сисадминский скрипт.
Собственно есть полтора .vbs фала один из которых записывает в файл МАК и ИМЯ ПК (но делает это только на исполняемой машине (думаю в автозагрузку засунуть)), и второй (половинка) который по сути должен был бы переписывать всю инфу из вышеупомянутого и пихать её в новый файл на админском компе (собственно для просмотра информации о всех компах на которых он запустился). Скрипт приложил на всякий, скорее всего косячные(Prog1.vbs тот самый первый скрипт, второй не выкладываю , чтобы не позориться!). Но Даже закончив эти 2 скрипта, будет только полдела.

Сам я не силен в программировании никак. Скрипт по больше части создан из того , что слизал в инете.

Изначально задача звучит так :
1 . При запросе (желательно из инпут бокса) МАК адреса, программа должна вывести имя запрашиваемого компьютера в домене.
2. Если имя не устраивает Админа, должна быть возможность поменять его. (Не админа но ИМЯ ПК)
3. Все) Вроде просто , но сложно..

Благодарю всех отликнувшихся энтузиастов!

Отправлено: 16:22, 26-07-2013

 

Старожил


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

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


По первому пункту вот один из возможных вариантов (не проверялся):
читать дальше »
Код: Выделить весь код
Dim objWMI, objCollection, objItem
Dim objWsNet, objDomain, objComputer, strDomain, strThisComputer
Dim objWShell, objExec, objOutStream
Dim arrComputers(), strMAC, strName, blnPing, strTemp, i

strMAC = Trim(InputBox("MAC-адрес:"))
If Len(strMAC) > 0 Then
    Set objWsNet = CreateObject("WScript.Network")
    strDomain = objWsNet.UserDomain
    strThisComputer = objWsNet.ComputerName
    Set objWsNet = Nothing
    Set objDomain = GetObject("WinNT://" & strDomain & ",domain")
    objDomain.Filter = Array("computer")
    i = -1
    For Each objComputer In objDomain
        i = i + 1
        ReDim Preserve arrComputers(i)
        arrComputers(i) = objComputer.Name
    Next
    Set objComputer = Nothing
    Set objDomain = Nothing
    On Error Resume Next
    For i = 0 To UBound(arrComputers)
        strTemp = vbNullString: blnPing = False
        If StrComp(strThisComputer, arrComputers(i), vbTextCompare) <> 0 Then
            Set objExec = objWShell.Exec("ping -n 1 -w 130 " & arrComputers(i))
            Set objOutStream = objExec.StdOut
            While Not objOutStream.AtEndOfStream
                strTemp = strTemp & Trim(objOutStream.ReadLine)
            Wend
            If InStr(1, strTemp, "TTL", vbTextCompare) > 0 Then
                blnPing = True
            Else
                blnPing = False
            End If
        Else
            blnPing = True
        End If
        If blnPing Then
            Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & arrComputers(i) & "\root\cimv2")
            If Err.Number = 0 Then
                Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress='" & strMAC & "'")
                If objCollection.Count > 0 Then
                    strName = arrComputers(i)
                    Exit For
                End If
                Set objCollection = Nothing
                Set objWMI = Nothing
            Else
                Err.Clear
            End If
        End If
    Next
    Set objOutStream = Nothing
    Set objExec = Nothing
    Set objWShell = Nothing
    If Len(strName) > 0 Then
        WScript.Echo "Искомое имя: " & strName
    Else
        WScript.Echo "Выполнить сопоставление не удалось."
    End If
End If
WScript.Quit 0

Второй пункт непонятен.

Отправлено: 00:58, 27-07-2013 | #2



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

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


Старожил


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

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


Проверил. Нашёл пропущенный оператор.
Перед оператором On Error Resume Next
надо добавить оператор Set objWShell = CreateObject("WScript.Shell")

Поскольку сценарий работает достаточно медленно, то лучше запускать его в консольном режиме. Там, по крайней мере, можно реализовать вывод промежуточных результатов.
читать дальше »
Код: Выделить весь код
Dim objWMI, objCollection, objItem
Dim objWsNet, objDomain, objComputer, strDomain, strThisComputer
Dim objWShell, objExec, objOutStream
Dim arrComputers(), strMAC, strName, blnPing, strTemp, i

strMAC = Trim(InputBox("MAC-адрес:"))
If Len(strMAC) > 0 Then
    strMAC = Replace(Replace(strMAC, " ", ""), "-", ":")
    Set objWsNet = CreateObject("WScript.Network")
    strDomain = objWsNet.UserDomain
    strThisComputer = objWsNet.ComputerName
    Set objWsNet = Nothing
    Set objDomain = GetObject("WinNT://" & strDomain & ",domain")
    objDomain.Filter = Array("computer")
    i = -1
    For Each objComputer In objDomain
        i = i + 1
        ReDim Preserve arrComputers(i)
        arrComputers(i) = objComputer.Name
    Next
    Set objComputer = Nothing
    Set objDomain = Nothing
    Set objWShell = CreateObject("WScript.Shell")
    On Error Resume Next
    For i = 0 To UBound(arrComputers)
        strTemp = vbNullString: blnPing = False
        If StrComp(strThisComputer, arrComputers(i), vbTextCompare) <> 0 Then
            Set objExec = objWShell.Exec("ping -n 1 -w 130 " & arrComputers(i))
            Set objOutStream = objExec.StdOut
            While Not objOutStream.AtEndOfStream
                strTemp = strTemp & Trim(objOutStream.ReadLine)
            Wend
            If InStr(1, strTemp, "TTL", vbTextCompare) > 0 Then
                blnPing = True
            Else
                blnPing = False
            End If
        Else
            blnPing = True
        End If
        If blnPing Then
            Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & arrComputers(i) & "\root\cimv2")
            If Err.Number = 0 Then
                Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress='" & strMAC & "'")
                If objCollection.Count > 0 Then
                    strName = arrComputers(i)
                    Exit For
                End If
                Set objCollection = Nothing
                Set objWMI = Nothing
            Else
                Err.Clear
            End If
        End If
    Next
    Set objOutStream = Nothing
    Set objExec = Nothing
    Set objWShell = Nothing
    If Len(strName) > 0 Then
        WScript.Echo "Искомое имя: " & strName
    Else
        WScript.Echo "Выполнить сопоставление не удалось."
    End If
End If
WScript.Quit 0

Последний раз редактировалось DmitriiV, 29-07-2013 в 09:26.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:16, 29-07-2013 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Остаточные имена компьютеров в Сети The_Immortal Microsoft Windows 7 2 15-06-2013 23:01
2007 - Замена присвоенного имена на обычные адреса ячеек Invincible Microsoft Office (Word, Excel, Outlook и т.д.) 9 07-10-2012 20:09
WINS/Browse - совпадающие имена, обновление IP-адреса Equal_S Сетевые технологии 4 29-04-2010 16:23
Удаленное выключение компьютеров (группы компьютеров) в домене zonderz Программное обеспечение Windows 1 18-10-2007 09:49
MAC адреса <разделение MAC адресов (или что то в этом роде) чтобы не было конфликтов> gunter85 Хочу все знать 2 19-07-2007 15:02




 
Переход