1

我想部署一个脚本来避免PC同时连接在WiFi和LAN上。我找到了一个带有两个参数的 VBS 脚本。一个被监视的适配器和一个“备份”的适配器,如果被监视的发生了。所以基本上,如果我的主适配器出现故障,另一个会上升,反之亦然。但是当我运行脚本时我必须指定两个适配器,这很好,但我无法在我的计算机库存上部署脚本。因此,我尝试通过创建一个能够从 LAN 识别无线适配器并检索这两个适配器的名称并最终使用它们而不是我的两个参数的函数来改进脚本。

我试图收集可以区分这两个适配器的信息。我以为我可以从 AdapterType 获得这些信息,但它们都是“以太网 802.3”而不是“以太网 802.3”和“无线”,就像我想的那样。

这是我收集有关我的接口的信息时的结果(我只先粘贴了两个,接下来的无关紧要)。

AdapterType : Ethernet 802.3
AdapterTypeID : 0
MACAddress : D4:BE:D9:43:D2:4A
NetConnectionStatus : 2
ProductName : Intel(R) 82579LM Gigabit Network Connection
DeviceID : 7
Availability : 3
PhysicalAdapter : True
ServiceName : e1cexpress
NetConnectionStatus :2
NetConnectionID : toto

AdapterType : Ethernet 802.3
AdapterTypeID : 0
MACAddress : 44:6D:57:5F:6E:C0
NetConnectionStatus : 2
ProductName : Carte Half-Mini de réseau local sans fil Wireless-N DW1501
DeviceID : 11
Availability : 3
PhysicalAdapter : True
ServiceName : BCM43XX
NetConnectionStatus :2
NetConnectionID : tata

此外,在适配器识别期间是否存在虚拟适配器可能是一个问题(VMWare 或 VirtualBox)?

现在这是我的功能。我必须说我是 Visual Basic 中的一个大人物,所以要温柔:)。

Function GetNetworkAdapterNames_LAN()
        Dim sConnexionLan', sConnexionWifi
        Dim aConnexionLan, objWMIService
        'Dim sConnexions As New List(Of String)
        Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

    Set aConnexionLan = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE AdapterType = 'Ethernet 802.3'",,48)
    'Set sConnexionWifi = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE AdapterType = 'Wireless'",,48)
    For Each objItem in aConnexionLan
        WScript.Echo ( "AdapterType : " & objItem.AdapterType )
        WScript.Echo ( "AdapterTypeID : " & objItem.AdapterTypeID )
        WScript.Echo ( "MACAddress : " & objItem.MACAddress )
        WScript.Echo ( "NetConnectionStatus : " & objItem.NetConnectionStatus )
        WScript.Echo ( "ProductName : " & objItem.ProductName )
        WScript.Echo ( "DeviceID : " & objItem.DeviceID )
        WScript.Echo ( "Availability : " & objItem.Availability )
        WScript.Echo ( "PhysicalAdapter : " & objItem.PhysicalAdapter )
        WScript.Echo ( "ServiceName : " & objItem.ServiceName )
        WScript.Echo ( "NetConnectionStatus :" & objItem.NetConnectionStatus )
        WScript.Echo ( "NetConnectionID : " & objItem.NetConnectionID )
        REM WScript.Echo ( "AdapterType : " & objItem.AdapterTypeID )
        REM WScript.Echo ( "AdapterType : " & objItem.AdapterTypeID )
        REM WScript.Echo ( "AdapterType : " & objItem.AdapterTypeID )
        REM WScript.Echo ( "AdapterType : " & objItem.AdapterTypeID )
        REM WScript.Echo ( "AdapterType : " & objItem.AdapterTypeID )
        WScript.Echo ( " " )


    Next
    'sConnexions.add(sConnexionLan)
    'sConnexions.add(sConnexionWifi)
    'return sConnexionLan 
End Function

主脚本可以在 IntelliAdmin 脚本中找到:netswitch.vbs。这只是我添加的功能,用于尝试检索一些信息以区分 LAN 和 WiFi 适配器,因此目前与脚本的以下内容并不真正相关。无论如何,一旦我找到了区分这两个适配器的方法,我将返回它们的名称并将它们替换为参数应该存在的位置。

感谢您的阅读和未来的帮助,我希望我的帖子可以理解。:)

编辑 :

我试图获得标准名称,该名称应该在每台 PC 上用于 LAN 和 WiFi 适配器。该脚本适用于该解决方案,但它对适配器名称更改非常敏感。

这是一个pastebin链接,恐怕在这里发布整个代码有点长。

http://pastebin.com/4y8EMwVJ

您有什么想法可以区分 LAN 适配器和 WiFi 适配器吗?它可以使我的脚本更强大:)

4

0 回答 0