2

I have a script that display some information IP, login name, and Mac addresses but it shows all mac addressess even bluetooth device. How to modify this script to list mac address of only ethernet wired interface, and display also it's name?

Dim WMI, Configs, Config, Adapters, Adapter
Dim Nics, Nic, StrIP, CompName
Dim intCount, strMAC, strQuery, objWMIService, colItems, objItem, i 
Dim WshNetwork, strUserName

intCount = 0
strMAC   = ""
' We're interested in MAC addresses of physical adapters only
strQuery = "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID > ''"

Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )
Set colItems      = objWMIService.ExecQuery( strQuery, "WQL", 48 )

For Each objItem In colItems
If InStr( strMAC, objItem.MACAddress ) = 0 Then
    strMAC   = strMAC & ", " & objItem.MACAddress
    intCount = intCount + 1
End If
Next

' Remove leading comma
If intCount > 0 Then strMAC = Mid( strMAC, 2 )

Set Nics = GetObject("winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")

For Each Nic in Nics
    if Nic.IPEnabled then
        StrIP = Nic.IPAddress(i)
        Set WshNetwork = WScript.CreateObject("WScript.Network")

        CompName = WshNetwork.Computername
        Set WMI = GetObject("winmgmts:{impersonationlevel=impersonate}root/cimv2")
        strUserName = wshNetwork.UserName

        ' BEGIN CALLOUT A
        Set Configs = WMI.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled=True")
        ' END CALLOUT A

        For Each Config In Configs
            ' BEGIN CALLOUT B
            Set Adapters = WMI.AssociatorsOf("Win32_NetworkAdapterConfiguration.Index=" & Config.Index, "Win32_NetworkAdapterSetting")
            ' END CALLOUT B
            'For Each Adapter In Adapters
            'If Left(Adapter.Description, 14) = "Cisco AnyConnect VPN Virtual Miniport Adapter for Windows" Then
            'VPNIP = Config.IPAddress(0)
            'End If
         Next
        'Next

        MsgBox "IP Adres:      "&StrIP & vbNewLine _
             & "Computer Name: "&CompName & vbNewLine _
             & "Login:         "&strUserName & vbNewLine _
             & "Mac Adres:     "& strMAC _
             ,4160,"Information IP"

        'wscript.quit
    end if
next
LotPings
  • 7,231
zuku
  • 21
  • Have you tried to ask this question on StackOverflow? :-) –  May 22 '17 at 07:50
  • @Cown It probably wouldn't be a good fit there because it doesn't show sufficient amount of research before asking. – gronostaj May 22 '17 at 07:57
  • @gronostaj I'm beginning to think it's impossible for a question to be "a good fit" there XD – Blaine May 22 '17 at 08:10

1 Answers1

1

There are several problems with the script, but to exclude BT devices you could change this:

For Each objItem In colItems
If InStr( strMAC, objItem.MACAddress ) = 0 Then
    strMAC   = strMAC & ", " & objItem.MACAddress
    intCount = intCount + 1
End If
Next

To this:

For Each objItem In colItems
If (InStr( strMAC, objItem.MACAddress ) = 0) And (Left(objItem.PNPDeviceID, 4) <> "BTH\") Then
    strMAC   = strMAC & ", " & objItem.MACAddress
    intCount = intCount + 1
End If
Next

Bluetooth devices have a PNPDeviceID that begins with "BTH\" so this excludes that from the selection.

shawn
  • 895