NEU: ThinkPadNetUtility (Windows)

Cyrix

Member
Themenstarter
Registriert
7 Feb. 2014
Beiträge
376
Hallo liebe ThinkPad-Freunde,

ich habe ein kleines Tool geschrieben, welches ich Euch gerne hier vorstellen möchte. Hauptgrund zur Motivation und Umsetzung war eigentlich, dass ich AccessConnections aus den ThinkVantageTools, nur dazu verwendet hatte, um zwischen dem LAN- und WLAN-Adapter automatisch hin und her zu wechseln. Besonders wichtig also, wenn man eine Dock verwendet und das WLAN nicht manuell deaktiveren will, sondern selbstverständlich die schnelle LAN-Verbindung nutzen möchte. Und genau diese Aufgabe übernimmt jetzt das Script, welches ich bisher unter Windows 7 und Windows 10 einige Wochen nach Erstellung auf meinen verschiedenen Geräten verwende.

Hat der LAN-Adapter keine aktive TCP/IP-Verbindung oder ist das Netzwerkkabel ausgesteckt, dann wird automatisch der WLAN-Adapter aktiviert. Wird das Netzwerkkabel eingesteckt und konnte eine TCP/IP-Verbindung festgestellt werden, dann wird der WLAN-Adapter deaktiviert.

Das Script selbst kann einfach in eine leere Textdatei kopiert werden, die man dann umbenennt z.B. nach "ThinkPadNetUtility.vbs". Es handelt sich um ein VBScript, die Endung muss also auf "vbs" enden, damit es unter Windows ausgeführt werden kann.

Beim Starten des Scriptes müssen die Namen des Netzwerkadapter für LAN und WLAN mit angegeben werden. Zum Beispiel:

Code:
C:\ThinkPadNetUtility.vbs "Ethernet" "WLAN"

Der Intervall nach dem das Script den Verbindungsstatus der Netzwerkadapter überprüft kann angepasst werden. Dazu einfach den Wert der Konstante "C_SECOND" im Script ändern. Standardmäßig werden die Netzwerkadapter alle 5 Sekunden überprüft.

Das Script funktioniert mit allen gängigen Notebooks die eine LAN- und WLAN-Schnittstelle haben. Also nicht nur mit ThinkPads. Bei ThinkPads sind allerdings zwei kleine Besonderheiten zu beachten, damit das Script den WLAN-Adapter aktivieren und deaktivieren kann. Der WLAN-Schiebeschalter an der Seite desThinkPads muss eingeschaltet sein. Verwendet man die ThinkPad-HotkeyFeatureIntegration muss der WLAN-Adapter dauerhaft über FN+F5 aktiviert worden sein.

Wer das Script anpassen oder erweitern möchte, kann dies gerne tun, solange diese Informationen zurück in diesen Thread fließen.

Und hier gibts das ThinkPadNetUtility Script in der Version 1.0 ;)
Code:
'Modify To Increase Time Between Each Session
Const C_SECOND = 5

'Do Not Modify Anything, If You Don't Know What You Do
'#####################################################
Dim sMsgBoxTitle
Dim vValidParam
Dim sLanAdapterName
Dim sWifiAdapterName

sMsgBoxTitle = "ThinkPadNetUtility v.1.0 by Cyrix"

'Check Script Parameter Length
If WScript.Arguments.Length = 2 Then
    Set objShell = CreateObject("Shell.Application")
    'Pass An Argument With UAC
    objShell.ShellExecute "wscript.exe", _
    Chr(34) & WScript.ScriptFullName & Chr(34) & Chr(32) & _
    Chr(34) & WScript.Arguments(0) & Chr(34) & Chr(32) & _
    Chr(34) & WScript.Arguments(1) & Chr(34) & Chr(32) & _
    Chr(34) & "_uac" & Chr(34), "", "runas", 1
    WScript.Quit(0)
End If

'Validate Bogus Paramater
vValidParam = False
If WScript.Arguments.Length = 3 Then
    If WScript.Arguments(2) = "_uac" Then
        vValidParam = True
        sLanAdapterName = WScript.Arguments(0)
        sWifiAdapterName = WScript.Arguments(1)
    End If
End If

'Display HowTo Info Message
If Not vValidParam Then
    Msgbox "This script was created for users of Thinkpad-Forum.de" & CHR(10) & CHR(13) & _
    " " & CHR(10) & CHR(13) & _
    "It checks the lan and wifi connection every " & C_SECOND & " seconds and enable" & CHR(10) & CHR(13) & _
    "or disable the wifi adapter. If the lan adapter has a valid ip address" & CHR(10) & CHR(13) & _
    "the wifi adapter will be disabled. Otherwise the wifi adapter will be" & CHR(10) & CHR(13) & _
    "enabled. In this regards the usage of DHCP is advantageous." & CHR(10) & CHR(13) & _
    " " & CHR(10) & CHR(13) & _
    "You can pass two parameters to this script. The one for the name of the" & CHR(10) & CHR(13) & _
    "lan adapter and another one for the name of the wifi adapter." & CHR(10) & CHR(13) & _
    "If you choose an invalid parameter an error message will be displayed." & CHR(10) & CHR(13) & _
    "This information message will also be displayed, if more or less parameters are used." & CHR(10) & CHR(13) & _
    " " & CHR(10) & CHR(13) & _
    "If the 'ThinkPad Hotkey Feature' is installed you have to enable the wifi adapter" & CHR(10) & CHR(13) & _
    "and press FN+F5 so the wifi card can establish a connection all time." & CHR(10) & CHR(13) & _
    " " & CHR(10) & CHR(13) & _
    "Admin rights will be required. Tested with Win7 x64 and Win10 x64." & CHR(10) & CHR(13) & _
    " " & CHR(10) & CHR(13) & _
    "Example:" & CHR(10) & CHR(13) & _
    "C:\ThinkPadNetUtility.vbs ""Local Connection"" ""Wireless Connection""" & CHR(10) & CHR(13) & _
    " " & CHR(10) & CHR(13) & _
    "ThinkPadNetUtility will be terminated, press [OK], set paramater and try again.", 0, sMsgBoxTitle
    WScript.Quit(0)
Else
    Set WshShell = WScript.CreateObject("WScript.Shell")
    
    Dim oIpAdapterSet
    Dim oIpConfigSet
    Dim oLanAdapter
    Dim oWifiAdapter
    
    Dim vLanAdapterIsEnabled
    Dim vLanAdapterHasIpAddress
    Dim vWifiAdapterExists
    Dim vWifiAdapterIsEnabled
    
    While(True)
    
        Set oIpAdapterSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapter")
        Set oIpConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration")

        'Search In Each Adapter From Adapter Set
        vLanAdapterIsEnabled = False
        vLanAdapterHasIpAddress = False
        For Each IpAdapter In oIpAdapterSet
            'Check If Lan Adapter Name Is Equal
            If IpAdapter.NetConnectionID = sLanAdapterName Then
                'Search In Each Config From Config Set (Adapter Is Enabled If Listed)
                For Each IpConfig In oIpConfigSet
                    'Check If Lan Adapter Mac Exists in Config Set
                    If IpAdapter.MacAddress = IpConfig.MacAddress Then
                        vLanAdapterIsEnabled = True
                        Set oLanAdapter = IpAdapter
                        'Check If Ip Is Enabled And Address Exists
                        If IpConfig.IPEnabled And Not IsNull(IpConfig.IPAddress) Then
                            vLanAdapterHasIpAddress = True
                        End If
                        'Break Loop If Lan Mac Address Match
                        Exit For
                    End If
                Next
                'Break Loop If Lan Adapter Name Found
                Exit For
            End If 
        Next

        'Search In Each Adapter From Adapter Set
        vWifiAdapterExists = False
        vWifiAdapterIsEnabled = False
        For Each IpAdapter In oIpAdapterSet
            'Check If Adapter Name Is Equal
            If IpAdapter.NetConnectionID = sWifiAdapterName Then
                vWifiAdapterExists = True
                Set oWifiAdapter = IpAdapter
                'Search In Each Config From Config Set (Adapter Is Enabled If Listed)
                For Each IpConfig In oIpConfigSet
                    'Check If Wifi Adapter Mac Exists in Config Set
                    If IpAdapter.MacAddress = IpConfig.MacAddress Then
                        vWifiAdapterIsEnabled = True
                        'Break Loop If Lan Mac Address Match
                        Exit For
                    End If
                Next
                'Break Loop If Wifi Adapter Name Found
                Exit For
            End If 
        Next
        
        'Check If Lan Adapter Enabled And Wifi Adapter Exists
        If vLanAdapterIsEnabled And vWifiAdapterExists Then
            'Check If Lan Adapter Has Address and Wifi Adapter Is Enabled
            If vLanAdapterHasIpAddress And vWifiAdapterIsEnabled Then
                'Disable Wifi Adapter If Lan Adapter Has Address
                oWifiAdapter.Disable()
            'Check Lan Adapter Hasn't Address And Wifi Adapter Is Disabled
            ElseIf Not vLanAdapterHasIpAddress And Not vWifiAdapterIsEnabled Then
                'Enable Wifi If Lan Adapter Hasn't Address
                oWifiAdapter.Enable()
            End If
        Else
            'Check If Lan Adapter Not Exists
            If Not vLanAdapterIsEnabled Then
                Msgbox "Couldn't find enabled Lan-Adapter!" & CHR(10) & CHR(13) & _
                " " & CHR(10) & CHR(13) & _
                "Lan-Adapter '" & sLanAdapterName & "' maybe disabled?" & CHR(10) & CHR(13) & _
                " " & CHR(10) & CHR(13) & _
                "ThinkPadNetUtility will be terminated, press [OK], set paramater and try again.", 0, sMsgBoxTitle
                WScript.Quit(1)
            End IF
            'Check If Wifi Adapter Not Exists
            If Not vWifiAdapterExists Then
                Msgbox "Couldn't find enabled / disabled Wifi-Adapter!" & CHR(10) & CHR(13) & _
                " " & CHR(10) & CHR(13) & _
                "Wifi-Adaptername '" & sWifiAdapterName & "' maybe wrong?" & CHR(10) & CHR(13) & _
                " " & CHR(10) & CHR(13) & _
                "ThinkPadNetUtility will be terminated, press [OK], set paramater and try again.", 0, sMsgBoxTitle
                WScript.Quit(1)
            End IF
        End If

        'Wait Until Next Session Will Be Performed
        WScript.Sleep 1000*C_SECOND
        
    Wend
    
End If

Wscript.Quit(1)

Das Script kann auch vor der Benutzeranmeldung ausgeführt werden und ist in der Lage ohne angemeldeten Benutzer den Verbindungsstatus der Netzwekadapter zu ermitteln. Dazu kann man einfach eine neue Aufgabe in der Aufgabenplanung erstellen. Hierfür habe ich eine kleine bebilderte Anleitung im Anhang erstellt.

Grüße Cyrix
 

Anhänge

  • ThinkPadNetUtility_0.png
    ThinkPadNetUtility_0.png
    23,6 KB · Aufrufe: 36
  • ThinkPadNetUtility_1.png
    ThinkPadNetUtility_1.png
    13,3 KB · Aufrufe: 26
  • ThinkPadNetUtility_2.png
    ThinkPadNetUtility_2.png
    21,5 KB · Aufrufe: 25
  • ThinkPadNetUtility_3.png
    ThinkPadNetUtility_3.png
    14,2 KB · Aufrufe: 21
  • ThinkPadNetUtility_4.png
    ThinkPadNetUtility_4.png
    13,2 KB · Aufrufe: 23
  • ThinkPadNetUtility_5.png
    ThinkPadNetUtility_5.png
    23,8 KB · Aufrufe: 24
  • ThinkPadNetUtility_6.png
    ThinkPadNetUtility_6.png
    23,3 KB · Aufrufe: 21
Zuletzt bearbeitet:
Coole Sache! Hat mir schon immer gefehlt... Angedockt und trotzdem lahm, aha... Läuft noch alles über er WLAN..

Das manuelle ein und ausschalten ist einfach umständlich...

Danke schon mal im Voraus, auch wenn ich noch nicht getestet habe...
 
hmm mein R400 macht das automatisch mit win7 wenn lan dran dann wlan aus

ok die erweiterten möglichkeiten bei deinem script sind sicher nen argument :D
 
Automatisch macht das Windows 7 oder Windows 10 eigentlich nicht. Vielleicht hast du ja noch AccessConnections installiert und dort irgendwann mal ein Profil hinterlegt?

Grüße Cyrix
 
Also bei mir wird LAN auch immer automatisch priorisiert, daher habe ich sowas auch noch nie vermisst. In Win7, 8 und 10. Access Connections habe ich daher auch zuletzt unter Vista benutzt. AC war nur gut, wenn man Profile mit statischen IPs benötigte.
 
Automatisch macht das Windows 7 oder Windows 10 eigentlich nicht.

Nein, Windows 7 noch nicht. Aber spätestens Windows 8 macht genau das automatisch.

Hänge ich mein Notebook ans Kabel, ist kurze Zeit später die WLAN Verbindung getrennt. Und AC war da niemals drauf. Aber selbst Windows 7 hat schon die Performance der Verbindungen berücksichtigt und die schnellere priorisiert.
 
Mal ernsthaft, habt ihr da etwas eingestellt?
Bei mir läuft alles weiter über WLAN, auch wenn ich andocke...?!
 
Mal ernsthaft, habt ihr da etwas eingestellt?
Bei mir läuft alles weiter über WLAN, auch wenn ich andocke...?!

Genau das Verhalten habe ich bei Windows 7 und Windows 10 beobachtet. Aus diesem Grund habe ich das ThinkPadNetUtility entworfen. Wenn es einfachere Mittel und Wege gibt die Funktionalität zum automatischen Aktivieren/Deaktivieren von WLAN zu erhalten, dann möge der Eine oder Andere seine Einstellungen preisgeben und nicht nur sagen das dies auch ohne Script geht.

Danke und Grüße
Cyrix
 
intel_pro_wireless.JPG


die intel pro wireless treiber können das auf jeden fall
ich bin zwar auch der meinung dieses feature mal in den normalen wlan einstellungen gesehen zu haben, aber finden kann ich sie derzeit auch nirgens...
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben