104596
Goto Top

In Batch Aktion abfangen wenn Lankabel ein- o. ausgesteckt wird

Hallo zusammen,

ich habe folgendes Problemchen:

Ich möchte mit Batch die Aktion abfangen, wenn ein Lankabel ein- und ausgesteckt wird.
Wenn das passiert, soll mit "Pfad\devcon.exe disable PNP-ID" die Wlankarte aktiviert, bzw. deaktiviert werden.

Meine Fragen nun:

1. Wie heißt die Aktion bzw. gibt es sie überhaupt?
2. Ist es möglich, die PNP Device ID mit Batch auszulesen?
-> Sonst müsste man ja pro Notebookmodell eine Batch schreiben.

Mein bisheriger Quelltext bis jetzt:


REM script by XXX XXX, Februar 2012
REM
muss im Administratormodus ausgeführt werden**


if Lan == inactive(
C:\Users\XXX\Desktop\devcon.exe enable "PCI\VEN_blabla" >> \\Servername\Freigabe\devcon.log
)else(
C:\Users\XXX\Desktop\devcon.exe disable "PCI\VEN_blabla" >> \\Servername\Freigabe\devcon.log
)


Klasse wärs dann noch, sofern die if-Abfrage laufen würde, dass die PNP ID automatisch ausgelesen und eingefügt werden würde.
Mit VBS würde die Abfrage so aussehen:


'name WLAN card

Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_NetworkAdapter where NetConnectionID like 'Local Area Connection%' or NetConnectionID like '%Kabelgebundene Netzwerkverbindung%'")
For Each objItem In colItems
cardname = objItem.ProductName
Next

msgbox cardname


'PNP ID Wlan card

Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_PnPSignedDriver where Description like '%" & cardname & "%' ")
For Each objItem In colItems
PNPDeviceID = objItem.HardWareID
Next

msgbox PNPDeviceID


Vielen Dank schonmal face-smile
LG,
Patrick

Content-ID: 179953

Url: https://administrator.de/forum/in-batch-aktion-abfangen-wenn-lankabel-ein-o-ausgesteckt-wird-179953.html

Ausgedruckt am: 25.12.2024 um 05:12 Uhr

Sheogorath
Sheogorath 24.07.2012 aktualisiert um 11:59:47 Uhr
Goto Top
Hallo alcapone991,

ich habe mal etwas aehnliches gebaut, du muesttest ueber die Registry gehen, unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces

findest du die Interface IDs mit denen koenntest du vermutlich etwas anfangen. ansonsten solltest du ueber Netsh gehen.

@echo off
SET Scriptname=IPConf.bat
call %logpath%v-log.bat
IF %C_IPbackup% EQU 1 (
IF %IPlog% NEQ 1 goto Ende
)

IPconfig /all >> "%Logpath%IP_old.log"  

find /I "%scriptname% erfolgreich" "%Logpath%IPconf.Log" >>"%Logpath%IPconf.Log"  
IF %ERRORLEVEL% EQU 0 goto Erfolgreich 


echo """"""""""""""""""""""""""""""""""""""""""""""""""  
ECHO           Wechsle zur Dynamischen IP
echo """"""""""""""""""""""""""""""""""""""""""""""""""  

reg query HKLM\SYSTEM\ControlSet001\services\Tcpip\Parameters\Adapters\ >> IPCONF_REG.txt

REM SET /p test=<IPCONF_REG.txt
@for /F %%i in ('find/N "2" IPCONF_REG.txt^') do @set UID2=%%i >> IPCONF.log  
SET UID=%UID2:~-39%
echo %UID%
reg.exe ADD HKLM\SYSTEM\ControlSet001\services\Tcpip\Parameters\Interfaces\%UID% /v EnableDHCP /t REG_DWORD /d 1 /F >>IPCONF.log
IF %ERRORLEVEL% NEQ 0 goto FEHLER
reg.exe ADD HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\%UID% /v EnableDHCP /t REG_DWORD /d 1 /F >>IPCONF.log
IF %ERRORLEVEL% NEQ 0 goto FEHLER

echo %UID% >> IPCONF.log
echo set restart=1 >> %logpath%v-log.bat
goto ERFOLGREICH

REM ######################################################
REM ####################LOG###############################
REM ######################################################


:FEHLER
ECHO !!FEHLER UM %time% %date%!!! >>"%Logpath%IPconf.Log"  
GOTO ENDE

:ERFOLGREICH
Echo.
Echo.
Echo.
echo """"""""""""""""""""""""""""""""""""""""""""""""""  
ECHO      Wechsel zur Dynamischen IP Erfolgreich
echo """"""""""""""""""""""""""""""""""""""""""""""""""  
echo ######################################################################### >>"%Logpath%IPconf.Log"  
Echo "§§§ %scriptname% erfolgreich um %time% %date% §§§" >>"%Logpath%IPconf.Log"  
echo ######################################################################### >>"%Logpath%IPconf.Log"  
goto ENDE
:Ende
echo §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ >>"%Logpath%IPconf.Log"  
echo §§§§§§§§§§§§§§§§§§§§§§  %date%      %time%         §§§§§§§§§§§§§§§§§§§§§§ >>"%Logpath%IPconf.Log"  
echo §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ >>"%Logpath%IPconf.Log"  

Das war das was ich geschreiben habe, da ging es aber darum, die Wired Adapter auf DHCP umzustellen. War aber letzten endes nichts anderes als den 1. Adapter auf DHCP zu stellen.

Hoffe das hilft dir etwas

Gruss
Chris
104596
104596 27.07.2012 um 11:28:38 Uhr
Goto Top
Hi Chris,

vielen Dank für deine Antwort face-smile
Hab das ganze aber dann doch mit C# gelöst, erschien mir irgendwie sinnvoller.
Ich stelle den Beitrag mal als gelöst, denn mit deinem Code kann man sicherlich etwas anfangen.

Ein schönes Wochenende!
Gruß,
Pat
0-byte
0-byte 28.08.2012 um 18:52:13 Uhr
Goto Top
Hallo Patrick,

ich sitze gerade an selbigem Problem.
Da ich mich auch ein wenig mit C# auskenne, würde ich mich sehr freuen,
wenn Du deine Lösung posten könntest - andere würde es sicherlich auch interessieren face-wink
Wie fragst Du den LAN-Status permanent ab?

LG
104596
104596 30.08.2012 um 10:10:41 Uhr
Goto Top
Hallo 0-byte,

meine Lösung findest du auch in einem anderen Posting:

Wie kann man in C Sharp Netzwerkadapter deaktivieren?

Du kannst aber auch z.B. den "Operational Status" abfragen:

foreach(NetworkInterface n in adapters)
{
if (n.OperationalStatus == ("Up"))

Viele Grüße,
Patrick