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-Key: 179953

Url: https://administrator.de/contentid/179953

Printed on: April 19, 2024 at 06:04 o'clock

Member: Sheogorath
Sheogorath Jul 24, 2012 updated at 09:59:47 (UTC)
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
Mitglied: 104596
104596 Jul 27, 2012 at 09:28:38 (UTC)
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
Member: 0-byte
0-byte Aug 28, 2012 at 16:52:13 (UTC)
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
Mitglied: 104596
104596 Aug 30, 2012 at 08:10:41 (UTC)
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