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:
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
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
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.png23,6 KB · Aufrufe: 36
-
ThinkPadNetUtility_1.png13,3 KB · Aufrufe: 26
-
ThinkPadNetUtility_2.png21,5 KB · Aufrufe: 25
-
ThinkPadNetUtility_3.png14,2 KB · Aufrufe: 21
-
ThinkPadNetUtility_4.png13,2 KB · Aufrufe: 23
-
ThinkPadNetUtility_5.png23,8 KB · Aufrufe: 24
-
ThinkPadNetUtility_6.png23,3 KB · Aufrufe: 21
Zuletzt bearbeitet: