Script qui ne se lance pas correctement en tache planifiée

adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 - Modifié le 29 mars 2024 à 19:02
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 - 1 avril 2024 à 16:29

Bonjour,

J'ai un script consistant à blacklister les SSID wifi en cas de découverte d'un SSID particulier. Tout fonctionne quand je lance mon batch qui lui même doit lancer un script .vbs dans une condition particulière. 

Le problème survient quand je programme mon script en tache planifiée à l'ouverture de session ou au déverrouillage. J'active pourtant les autorisations maximales et avec le compte SYSTEM. 

Le .vbs ne parvient pas à activer le wifi alors qu'il le fait très bien quand lancé manuellement. une idée de pourquoi les commandes sendkeys ne se font pas?

Le batch :

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:checkwifi
REM verifier que le wifi est bien allumé
netsh wlan show networks
if %errorlevel% equ 0 goto listwifi else do (
call "C:\toggle_wifi_on.vbs"
goto CHECKSSID
)

:listwifi
REM lister reseaux wifi a proximité
netsh wlan show networks > "c:\listwifi.txt" 
goto CHECKSSID


:CHECKSSID
netsh wlan show networks > "c:\listwifi.txt" 
set var="freeboxAD"
findstr /i %var% "c:\listwifi.txt" >nul
if %errorlevel% equ 1 (
REM debloquer la liste noire et ré-autoriser tous les SSID
netsh wlan delete filter permission=denyall networktype=infrastructure
) else (
REM blacklister SSID étrangers et autoriser SSID travail
netsh wlan add filter permission=denyall networktype=infrastructure
netsh wlan add filter permission=allow ssid="FreeboxAD" networktype=infrastructure
)

exit

le .vbs

set WshShell = Wscript.createObject("WScript.Shell")
WshShell.run "ms-availablenetworks:"
WScript.Sleep (1000)
WshShell.SendKeys ("+{TAB}")
WshShell.SendKeys (" ")
WScript.Sleep(700)
WshShell.SendKeys ("{ESC}")


Windows / Chrome 123.0.0.0

6 réponses

fabul Messages postés 38381 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 3 septembre 2024 5 280
Modifié le 29 mars 2024 à 19:24

Salut,

Dans une tâche planifiée, pour un script, il faut indiquer le %Path%

(Le dossier dans lequel se trouve le fichier (Ex: C:\Users\x))

(Commencer dans (Facultatif)) en plus du chemin complet du fichier.

Si tu ne l'as pas fait, ça peut foirer comme ça...

0
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 10
29 mars 2024 à 19:23

ok peux tu m'en dire plus à ce sujet? Je vois bien la section "commencer dasn" au niveau de l'onglet action, mais quel %path% je dois mettre? Le même que là ou se trouve mes 2 fichiers? soit le C:\ ?

0
fabul Messages postés 38381 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 3 septembre 2024 5 280
Modifié le 29 mars 2024 à 19:29

Le même chemin sans \Exemple.bat

Le dossier dans lequel se trouve le fichier script.

Je ne met jaiais directement sur C:\

C:\Users\x fonctionne pour moi quand le batch est dans le dossier x

Directement sur C: c'est peut être C: sans \ je ne sais pas si c'est possible.

0
brucine Messages postés 16456 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 septembre 2024 2 311
29 mars 2024 à 22:13

Bonjour,

En dehors du problème du vbs qui pourrait ou pas être lu au démarrage et des autorisations, pour lancer un batch en tâche planifiée (alors que le fichier cmd n'est pas sous le PATH), je spécifie le chemin entièrement qualifié:

mais il ne s'agit pas de batchs lancés au démarrage (et pour lesquels il faudra de toute façon cocher exécuté même si l'utilisateur n'est pas connecté et utiliser aussi, je suppose, le mot de passe approprié); la seule tâche planifiée que j'ai au démarrage est le lancement de mon logiciel de sécurité et qui n'a rien de spécifique sinon que le compte utilisateur est "INTERACTIF", inconnu au bataillon.
 

0
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 10 > brucine Messages postés 16456 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 septembre 2024
31 mars 2024 à 17:12

Salut brucine. Je pense avoir trouvé ce qui bloque mon vbs . Il semble que dans la tâche planifiée onglet général si on choisi le compte système cela coche obligatoirement "exécuter même si l'utilisateur n'est pas connecté". Il faut donc choisir le compte utilisateurs puis cocher l'option 1 (exécuter uniquement si connecté), là le vbs de lance correctement. Étrange. Dommage car avec cette configuration de tâche planifiée la fenêtre de prompt est visible alors que tout était invisible avec le compte "SYSTEME"

0
brucine Messages postés 16456 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 septembre 2024 2 311 > adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024
31 mars 2024 à 19:31

Essaie de tricher en mettant en tâche planifiée non pas le batch, mais un raccourci, propriétés, exécuter en fenêtre réduite.

0
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 10 > brucine Messages postés 16456 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 septembre 2024
1 avril 2024 à 15:31

en fait le gros pb si je choisi le compte utilisateur cest que la commande netsh n'est pas accepté depuis une session standard car pas les droits suffisants. Il faut absolument que j'utilise le compte SYSTEM mais du coup le vbs s'arrete en cours. C'est bizarre car le vbs se lance bien et actionne la première commande (ouverture du menu wifi), les autres restent en stand by on plante tout simplement (sendkeys)

0
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 10
29 mars 2024 à 19:53

cela n'a pas l'air de changer grand chose. En fait le .vbs qui est lancé semble avoir besoin de maintenir une activité pour valider les actions d'envoie de touche clavier (maj+tab en l'occurence) sinon les actions ne s'enchainent pas et restent figé à la première étape qui est d'ouvrir le paramètre wifi de la barre des taches.

Donc en gros mon .vbs se lance bien à l'ouverture de session (si le wifi est off) mais il ne réalise pas toutes les commandes demandées.

0
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 915
Modifié le 29 mars 2024 à 21:14

Bonjour,

Plutôt que d'utiliser des SendKeys, est-ce que tu as déjà essayé directement en batch avec une commande de ce genre :

netsh interface set interface name="Connexion réseau sans fil" admin=enabled

Si ça ne fonctionne pas il faudrait regarder du côté de Powershell.


0
brucine Messages postés 16456 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 septembre 2024 2 311
29 mars 2024 à 22:24

J'ai en effet un truc de ce genre qui d'ailleurs ne me sert à rien, je ne sais plus pourquoi je l'avais réalisé, qui bascule de Wifi en éthernet et lycée de Versailles (mais qui nécessite de vérifier au préalable l'index correspondant à l'adaptateur réseau concerné):

@echo off
CHCP 65001>NUL
setlocal enableextensions
setlocal EnableDelayedExpansion

FOR /F "skip=5 tokens=2,4 delims= " %%a IN ('netsh interface show interface') DO (
	SET STATUT=%%a & SET NATURE=%%b
	SET STATUT=!STATUT:~0,-1!
	IF "!STATUT!"=="Connecté" (
		IF "!NATURE!"=="Ethernet" (
			netsh interface set interface name="!NATURE!" admin=DISABLED
		) ELSE wmic path win32_networkadapter where index=2 call disable
		)	
	IF "!STATUT!"=="Déconnecté" (
		 IF "!NATURE!"=="Ethernet" (
			netsh interface set interface name="!NATURE!" admin=ENABLED
		) ELSE wmic path win32_networkadapter where index=2 call enable & netsh interface ipv4 set interface "Wi-Fi" metric=1 & netsh wlan connect name ="SFR_A918"
		)		

)
0
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 10 > brucine Messages postés 16456 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 septembre 2024
29 mars 2024 à 23:28

Merci pour cette proposition. En fait les commandes netsh ou wmic ne permettent pas d'activer le signal wifi ( bouton switchON-OFF ) mais seulement activer la carte réseau wifi. les utilisateurs standards ne peuvent pas déconnecter la carte réseau qui nécessite un droit admin donc la seule chose qui peut bloquer la visibilité des réseaux wifi (et dont les utilisateurs ont la main) c'est le "bouton" wifi sur la barre de tâche ou sur la page de connexion. 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 10
29 mars 2024 à 21:59

non malheureusement javais déjà essayé. Cette commande ne permet que d'activer la carte wifi si elle est désactivée. Mais je souhaite plutot "allumer" le switch  wifi. cest un peu penible cette histoire, il ya d'un coté la carte wifi et de l'autre le bouton On-off dans les actions rapides (barre des taches). Du coup je ne vois pas d'autre solution que le script vbs qui marche plutot bien sauf en tache planifiée. je n'arrive pas à comprendre pourquoi.

Au niveau de powershell il y aurait une solution pour commuter le bouton du wifi?

0
adgm1 Messages postés 274 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 29 juin 2024 10
29 mars 2024 à 22:51

l'idée du script est de pouvoir faire un semblant de géolocalisation du pc portable de l'utilisateur (en dedans ou dehors d'un lieu déterminé). Si au démarrage de la session le wifi "lycee" est détecté parmi la liste des hotspot à proximité alors c'est que l'utilisateur est au lycée. Et donc on blacklist tous les hotspot sauf "lycee" pour empêcher les étudiants d'utiliser un partage de connexion. S'ils sont chez eux alors le réseau wifi du lycée n'est plus visible donc on fait l'effet inverse on supprime la liste noire des hotspot et on autorise la connexion à n'importe quel réseau wifi à proximité.

Mais dans le cas où l'utilisateur aurait cliqué sur le bouton ON-Off du wifi alors le script ne peut pas fonctionner correctement et il faut au préalable mettre sur ON afin que la liste des hotspot puisse être réalisée et analysée.

0