Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Вывод информации о ПК по сети (http://forum.oszone.net/showthread.php?t=295754)

Rusya89 19-02-2015 01:04 2473279

Вывод информации о ПК по сети
 
Добрый вечер, есть задачка никак не получается её решить. Суть в следующем скрипт выдает информацию о ПК в виде
Код:

Domain\User,00:50:56:C0:00:08,192.168.12.1,PC_Name
все замечательно за исключением того что на ПК есть ещё два виртуальных сетевых интерфейса, соответственно скрипт выдает мне первый попавшийся ip mac.
Код:

10.10.12.1
F4:6D:04:07:88:AD

192.168.13.1
00:50:56:C0:00:01

192.168.12.1
00:50:56:C0:00:08

Помогите решить задачу, как заставить скрипт выводить один сетевой интерфейс или записать их друг за другом
Код:

так

Domain\User,F4:6D:04:07:88:AD,10.10.12.1,PC_Name

или так

Domain\User,F4:6D:04:07:88:AD,10.10.12.1,PC_Name
Domain\User,00:50:56:C0:00:08,192.168.12.1,PC_Name
Domain\User,00:50:56:C0:00:01,192.168.13.1,PC_Name

Сам скрипт

Код:

On error resume next
strComputer = Wscript.Arguments.Item(0)

If strComputer = "" Then strComputer="." 'Use "." (local computer) if no computer-name was entered
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
       
For Each IPConfig in IPConfigSet
    If Not IsNull(IPConfig.IPAddress) Then 
        For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
            WScript.Echo IPConfig.IPAddress(i)
                        StrIP = IPConfig.IPAddress(i)
        Next
                        WScript.Echo IPConfig.MacAddress
                        macinfo = IPConfig.MacAddress

    End If
Next

If strComputer = "." Then
  Set objWMIService = GetObject( "winmgmts:\\" & strComputer & "\root\cimv2")
  Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )

'Grab the netbios name of each computer
  For Each objItem in colItems
    host = objItem.Name
'    WScript.Echo "MAC Address for Computer Name: " & host & " is " & macinfo 'Uncomment to display   
  Next
Else
  host = strComputer
End If

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")

For Each objItem In colItems
        user = objItem.UserName
Next

        strLine = user & "," & macinfo & "," & strIP & "," & host

Dim objFile, objFolder, objFSO
Dim strFolder, strFile, strLine
strFolder = "c:\"
strFile = "USERS.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")

set objFile = nothing
' For auditing, we want APPEND mode to track all MAC/IPs for the computer
Const ForAppending = 8

Set objFile = objFSO.OpenTextFile (strFolder & strFile, ForAppending, True)

' Write Computer Name, MAC address, IP Address(es) and Date to a text file
objFile.WriteLine(strLine)
objFile.Close

wscript.quit(0)


DeLit 19-02-2015 15:36 2473493

думаю вначале стоило собрать информацию о имени компа и текущем пользователе
а выдачу ответа на консоль вставить в цикле получения информации об IP-адресе и MAC
тогда ты получишь несколько строк

Измененный код
Код:

on error resume next

strComputer = Wscript.Arguments.Item(0)

' Use "." (local computer) if no computer-name was entered
if strComputer = "" then
        strComputer="."
end if


' GET HOST NETBIOS NAME
If strComputer = "." Then
        Set objWMIService = GetObject( "winmgmts:\\" & strComputer & "\root\cimv2")
        Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )

        'Grab the netbios name of each computer
        For Each objItem in colItems
                info_nbname = objItem.Name
                ' WScript.Echo "MAC Address for Computer Name: " & host & " is " & macinfo 'Uncomment to display   
        Next
Else
        info_nbname = strComputer
End If


' GET CURRENT USER
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")

For Each objItem In colItems
        info_user = objItem.UserName
Next


Dim objFile, objFolder, objFSO
Dim strFolder, strFile, strLine
strFolder = "c:\"
strFile = "USERS.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")

set objFile = nothing
        ' For auditing, we want APPEND mode to track all MAC/IPs for the computer
Const ForAppending = 8

Set objFile = objFSO.OpenTextFile (strFolder & strFile, ForAppending, True)
        ' Write Computer Name, MAC address, IP Address(es) and Date to a text file

objFile.WriteLine("NEW LAUNCH")

               
               
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
       
Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
       
For Each IPConfig in IPConfigSet
    If Not IsNull(IPConfig.IPAddress) Then 
        For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
                        info_ip = IPConfig.IPAddress(i)
        Next
                'WScript.Echo IPConfig.MacAddress
                info_mac = IPConfig.MacAddress
                strLine = info_user & "," & info_mac & "," & info_ip & "," & info_nbname
                objFile.WriteLine(strLine)
                MsgBox(strLine)
    End If
Next

objFile.Close


wscript.quit(0)



Обращаю внимание, что я немного поменял названия переменных, чтоб немного понимать, где наши целевые значения находятся


Время: 06:47.

Время: 06:47.
© OSzone.net 2001-