Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1622 connectés 

 


Dernière réponse
Sujet : Activer/desactiver une carte réseau via un script sur WinXP [Résolu]
breizhbugs Bonsoir,
J'ai fait un petit script vbs wmi:

Code :
  1. strComputer = "."
  2. sConnectionName = "connexion au réseau local"
  3. Set objWMIService = GetObject("winmgmts:\\" &   strComputer & "\root\cimv2" )
  4. set colAdapters =   objWMIService.Execquery    ("Select * from Win32_NetworkAdapter" )
  5. For Each Adapter in colAdapters
  6. if lcase(Adapter.NetConnectionID)  = lcase(sConnectionName) then
  7.  WScript.Echo "/nid:" & Adapter.NetConnectionID & "/nom:" & Adapter.Name & " / enabled:" & Adapter.NetEnabled
  8.  if lcase(Adapter.NetEnabled)  = lcase("vrai" ) then
  9.   WScript.Echo "actif -> INACTIF"
  10.   Adapter.Disable()
  11.  else
  12.   WScript.Echo "inactif->ACTIF"
  13.   Adapter.Enable()
  14.  end if
  15.  exit for
  16. end if
  17. Next


bon au vu de la doc win32_networkadapter est deprecated mais marche pour ipv4 quand même chez moi (windows 7)
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx
(edit: bon je suis arrivé ici via http://fr.openclassrooms.com/forum [...] e-84842948 ce qui explique que je n'ai pas fait gaffe à la date, excusez du déterrage, mais bon script plus simple)


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
breizhbugs Bonsoir,
J'ai fait un petit script vbs wmi:

Code :
  1. strComputer = "."
  2. sConnectionName = "connexion au réseau local"
  3. Set objWMIService = GetObject("winmgmts:\\" &   strComputer & "\root\cimv2" )
  4. set colAdapters =   objWMIService.Execquery    ("Select * from Win32_NetworkAdapter" )
  5. For Each Adapter in colAdapters
  6. if lcase(Adapter.NetConnectionID)  = lcase(sConnectionName) then
  7.  WScript.Echo "/nid:" & Adapter.NetConnectionID & "/nom:" & Adapter.Name & " / enabled:" & Adapter.NetEnabled
  8.  if lcase(Adapter.NetEnabled)  = lcase("vrai" ) then
  9.   WScript.Echo "actif -> INACTIF"
  10.   Adapter.Disable()
  11.  else
  12.   WScript.Echo "inactif->ACTIF"
  13.   Adapter.Enable()
  14.  end if
  15.  exit for
  16. end if
  17. Next


bon au vu de la doc win32_networkadapter est deprecated mais marche pour ipv4 quand même chez moi (windows 7)
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx
(edit: bon je suis arrivé ici via http://fr.openclassrooms.com/forum [...] e-84842948 ce qui explique que je n'ai pas fait gaffe à la date, excusez du déterrage, mais bon script plus simple)

Yeam désolé pour le déterrage de topic... mais j'aimerais beaucoup ce script pour windows 7 64 bits, qqun sait-il comment faire?
kimura Je sais que ce topic a deux ans mais, mon cher Tonton flingueur2, si tu traines encore dans le coin, merci beaucoup pour ce script que je viens d'utiliser et qui me fait gagner un temps fou (parce que je déconnectais / connectais manuellement mes connexions locale et sans fil)! ;)
programmix Bonjour,
 
J'ai un pc sous XP Pro qui est utilisé par différentes personnes.  L'une d'elles a tous les droits et est autorisées à se connecter au réseau de l'entreprise ainsi qu'à internet.  Les autres non.
 
Seulement malgré la désactivation des programmes comme internet explorer, mozilla, etc., ces utilisateurs parviennent encore à surfer sur internet en passant par des chemins détournés tels que le solitaire en ligne, le windows média player, etc.
 
Je vois donc dans l'utilisation de ce sript la manière radicale et sûre de bloquer ces utilisateurs.
 
Seulement voilà, je ne suis pas certain de la manière d'enregistrer le script, de l'endroit où le mettre et la façon de l'appeler de manière transparente pour les utilisateurs.
 
Si quelqu'un pouvait me tuyauter un peu, ça me ferait certainement ganer du temps...  D'avance merci
yannick7fr merci La_globule pour ta réponse  :)  
Le script corrigé fonctionne très bien et est beaucoup plus simple d'utilisation que DEVCON !
la_globule @yannick7fr :
 
J'ai trouvé l'erreur sur ton script.
 
Il faut remplacer les 2 lignes au début :
sEnableVerb = "En&able"
sDisableVerb = "Disa&ble"
 
par :
sEnableVerb = "&Activer"
sDisableVerb = "&Désactiver"  

 

et là, ça marche bien.
Ca fonctionne en flip-flop : tu lances, ça désactive, tu relances, ça réactive (comme un interrupteur).
 
Ce script a l'avantage qu'il peut fonctionner sur n'importe quelle machine et qu'il ne t'oblige pas à connaître l'identification PnP de la carte réseau.
 
Voilà.

Tonton flingueur2

yannick7fr a écrit :

Bonjour,
 
Sur un poste en XP Pro, j'aimerais pouvoir activer / desactiver une connexion réseau au travers d'un script.  
J'ai essayer de voir avec "netsh" mais je n'y suis pas arrivé.
 
Est ce que quelqu'un a une solution?
 
D'avance merci
Yannick
 
Edit : Problème résolu, la solution un peu plus bas


 
Bonjour,
 
 
Petits complèments à votre message du 2/12/2005 !!
 
OK pour devcon : Il faut l'installer dans C:\Windows
 
Pour trouver l'ID d'une carte réseau : Gestionnaire périphérique/Propriétés de la carte réseau/Détail/Numéro d'identification du matériel : L'ID suit DEV ou _DEV.
 
Ayant 2 accès réseau j'ai écrit le script suivant pour choisir l'un ou l'autre : Sans fil ou réseau local(Câble)
 
 
 
Set WshShell = CreateObject("WScript.Shell" )
 
Err.Clear
On Error Resume Next
 
Reponse = WshShell.PopUp ("Oui : activer Wifi, Non : activer Câble", 0, "Activation réseau sans fil", vbYesNoCancel + vbQuestion + VbDefaultButton3)
 
If reponse = 7 Then
 WshShell.Run ("Devcon disable *DEV_3890*" ) ' Non --> Câble
 WshShell.Run ("Devcon enable *DEV00DF*" )
ElseIf reponse = 6 Then
 WshShell.Run ("Devcon enable *DEV_3890*" ) ' Oui --> Wifi
 WshShell.Run ("Devcon disable *DEV00DF*" )
End if
 
Wscript.Quit
 
 
Votre message m'a fait découvrir beaucoup de choses. Merci et bon vent. RM.[#000ef0]

bigstyle Merci pour cet outil je ne connaissais pas :)
yannick7fr Finalement, j'ai trouvé!
Micro$oft met à disposition un utilitaire nommé DEVCON.EXE qui est dispo à cette adresse :  http://support.microsoft.com/defau [...] US;Q311272.
 
Avec cet utilitaire, on liste tout les périphérique présent sur la machine :
Soit par la commande suivante : devcon -m:\\test find pci\* (ou \\test est le nom de votre PC)
Soit par : devcon find *
 
Dans c=le resultat obtenu, il convient ensuite de trouver la carte réseau par son ID. En ce qui me concerne, j'ai lancer "devcon -m:\\test find pci\* " et cela donne :

Citation :


PCI\VEN_8086&DEV_1039&SUBSYS_10011734&REV_82\4&3B90381F&0&40F0: Intel(R) PRO/100 VE Network Connection #2
PCI\VEN_8086&DEV_244E&SUBSYS_00000000&REV_82\3&61AAA01&0&F0 : Intel(R) 82801EB PCI Bridge - 244E
PCI\VEN_8086&DEV_24C0&SUBSYS_00000000&REV_02\3&61AAA01&0&F8 : Intel(R) 82801DB LPC Interface Controller - 24C0  
PCI\VEN_8086&DEV_24C2&SUBSYS_10041734&REV_02\3&61AAA01&0&E8 : Contrôleur hôte universel USB Intel(r) 82801DB/DBM - 24C2
PCI\VEN_8086&DEV_24C3&SUBSYS_10041734&REV_02\3&61AAA01&0&FB : Intel(R) 82801DB/DBM SMBus Controller - 24C3  
PCI\VEN_8086&DEV_24C4&SUBSYS_10041734&REV_02\3&61AAA01&0&E9 : Contrôleur hôte universel USB Intel(r) 82801DB/DBM - 24C4
PCI\VEN_8086&DEV_24C5&SUBSYS_00881734&REV_02\3&61AAA01&0&FD : SoundMAX Integrated Digital Audio
PCI\VEN_8086&DEV_24C7&SUBSYS_10041734&REV_02\3&61AAA01&0&EA : Contrôleur hôte universel USB Intel(r) 82801DB/DBM - 24C7
PCI\VEN_8086&DEV_24CB&SUBSYS_10041734&REV_02\3&61AAA01&0&F9 : Intel(R) 82801DB Ultra ATA Storage Controller - 24CB
PCI\VEN_8086&DEV_24CD&SUBSYS_10041734&REV_02\3&61AAA01&0&EF : Contrôleur hôte étendu USB 2.0 Intel(r) 82801DB/DBM - 24CD
PCI\VEN_8086&DEV_2560&SUBSYS_00000000&REV_03\3&61AAA01&0&00 : Intel(R) 82845G/GL/GE/PE/GV Processor to I/O Controller - 2560  
PCI\VEN_8086&DEV_2562&SUBSYS_10031734&REV_03\3&61AAA01&0&10 : Intel(R) 82845G/GL/GE/PE/GV Graphics Controller


 
Ensuite, pour désactiver la carte réseau il faut lancer la commande suivante :  

Citation :

devcon disable *DEV_1039*


 
Et enfin pour activer la carte réseau

Citation :

devcon enable *DEV_1039*


 
Ces commandes fonctionnent très bien sur le poste en question mais je ne suis pas sur que cela fonctionne sur toutes les machines.  
Mais dans le principe il faut donner a l'executable devcon.exe un moyen unique de trouver la carte réseau. Pour mon cas, j'avais beaucoup de périphérique dont l'ID commencait par PCI\VEN... j'ai donc mis une * puis DEV_1039 puis un autre *.  
 
En tout cas, cette commande repond à mon besoin.
N'hésitez pas à me contacter si vous voulez des précisions.
 
Yannick
 
PS Merci Google

yannick7fr J'ai pris le script dans sa totalité et je l'ai modifié  pour mettre le nom de ma connection réseau (LAN) et le nom du repertoire "Connexions réseau". Au final j'en suis là :

Citation :


Const ssfCONTROLS = 3
 
sConnectionName = "LAN"
 
sEnableVerb = "En&able"
sDisableVerb = "Disa&ble"
 
set shellApp = createobject("shell.application" )
set oControlPanel = shellApp.Namespace(ssfCONTROLS)
 
set oNetConnections = nothing
for each folderitem in oControlPanel.items
  if folderitem.name  = "Connexions réseau" then
    set oNetConnections = folderitem.getfolder: exit for
  end if
next
 
if oNetConnections is nothing then
  msgbox "Couldn't find 'Connexions réseau' folder"
  wscript.quit
end if
 
set oLanConnection = nothing
for each folderitem in oNetConnections.items
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next
 
if oLanConnection is nothing then
  msgbox "Couldn't find '" & sConnectionName & "' item"
  wscript.quit
end if
 
bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
  s = s & vbcrlf & verb.name
  if verb.name = sEnableVerb then
    set oEnableVerb = verb  
    bEnabled = false
  end if
  if verb.name = sDisableVerb then
    set oDisableVerb = verb  
  end if
next
 
'debugging displays left just in case...
'
'msgbox s ': wscript.quit
'msgbox "Enabled: " & bEnabled ': wscript.quit
 
'not sure why, but invokeverb always seemed to work
'for enable but not disable. =20
'
'saving a reference to the appropriate verb object
'and calling the DoIt method always seems to work.
'
if bEnabled then
  oLanConnection.invokeverb sDisableVerb
  oDisableVerb.DoIt
else
  oLanConnection.invokeverb sEnableVerb
  oEnableVerb.DoIt
end if
 
'adjust the sleep duration below as needed...
'
'if you let the oLanConnection go out of scope
'and be destroyed too soon, the action of the verb
'may not take...
'
wscript.sleep 1000


 
J'obtiens le message d'erreur suivant :  
 

Citation :


Ligne : 63
Caractère. : 3
Erreur : Objet requis: 'oDisableVerb'
Code: 800A01A8
Source : Erreur d'execution Microsoft VBScript


 
N'étant pas un spécialiste du vbscript je suis un peu bloqué; donc si quelqu'un peut m'aider s'il vous plait.
D'avance merci
Yannick

Jovial you' re welcome ;)
yannick7fr Je vais essayer cà dès demain (pour l'instant j'ai fini ma journée...;-)); je mettrai mes resultats en ligne.
Merci bcp pour ta réponse Jovial
 
Yannick
Jovial ceci ?
 
http://groups.google.co.uk/group/m [...] urce&hl=en
yannick7fr Bonjour,
 
Sur un poste en XP Pro, j'aimerais pouvoir activer / desactiver une connexion réseau au travers d'un script.  
J'ai essayer de voir avec "netsh" mais je n'y suis pas arrivé.
 
Est ce que quelqu'un a une solution?
 
D'avance merci
Yannick
 
Edit : Problème résolu, la solution un peu plus bas

Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR