Problème planificateur de tâche

Fermé
Toto - 7 mars 2023 à 12:52
brucine Messages postés 14883 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 mai 2024 - 9 mars 2023 à 16:19

Bonjour,

Je fais appel a de l'aide car j'ai un problème dans le planificateur de tache sous Windows 10, je souhaite que lorsqu'une tache planifiée est manqué qu'elle s'exécute dès que possible au prochain démarrage de l'ordinateur.

Même en activant toutes les bonnes options, la tâche ne veut pas s'exécuter au démarrage de l'ordinateur si la date à été manqué, et je ne comprend pas pourquoi, j'espère que quelqu'un pourrait m'expliquer et résoudre se phénomène.

La tache concerné est une tache qui est programmé pour tous les 3 mois et elle exécute un script.

Voici les paramètres de ma tache que j'ai mis :

Si besoins de plus d'informations n'hésiter pas à me demander.

Merci par avance.

6 réponses

fabul Messages postés 37905 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 28 mai 2024 5 210
7 mars 2023 à 14:03

Salut,

Le "Working Path" (Commencer dans (Facultatif)) de ton script à exécuter est bien indiqué ?

(Pas seulement le chemin)

(Dans Actions)

0

Non je n'ai rien indiqué dans "Commencer dans (facultatif)", je dois y écrire quoi dedans ? "Working Path" ?

0
fabul Messages postés 37905 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 28 mai 2024 5 210
7 mars 2023 à 14:46

Écrire le chemin du dossier dans lequel le script se trouve.

0

Déjà fait et cela ne fonctionne toujours pas 

0
brucine Messages postés 14883 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 mai 2024 1 937
7 mars 2023 à 20:35

Bonjour,

Comme on ne sait pas quelle est ta commande, on n'est pas rendus.

Si c'est un script Batch, on doit spécifier l'interpréteur de commandes: dans Programmes/Scripts on met cmd et dans Arguments /C (Chemin) où le chemin est parfaitement qualifié et entre guillemets, rien dans Commencer dans.

Elle doit être exécutée une première fois en manuel (pour entrer l'utilisateur et le mot de passe) et on doit vérifier que le pare-feu ne s'y oppose pas.

L'item si un démarrage planifié est manqué ne veut pas dire que la tâche sera lancée au prochain démarrage, mais qu'elle sera relancée immédiatement puis le nombre de fois spécifié si elle échoue.

Si on veut qu'elle soit aussi lancée au démarrage, on doit créer un nouveau déclencheur à cet effet.

Bien sûr, avant la planification, on doit s'assurer que ce n'est pas le script lui-même qui échoue (défaut de droits, erreurs de syntaxe...)

0

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

Posez votre question

Oui tous cela est effectué, mais je ne peux pas ajouter le déclencheur "lancer au démarrage" car sinon le script va s'exécuter à chaque redémarrage tous les jours et ce n'est pas ce que je rechercher.

Dans mon script je fais un verrouillage de session et j'ai remarqué qu'il ne le prenais pas en compte dans les taches également.

Mais le script ne se lance toujours pas au démarrage, mais quand je le lance moi même à partir du planificateur de tache il veux pas verrouiller la session. 

0
brucine Messages postés 14883 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 mai 2024 1 937
8 mars 2023 à 11:49

Quitte à me répéter, il n'existe aucune condition permettant de lancer une tâche au démarrage en fonction d'un paramètre particulier: on la lance globalement au démarrage ou pas.

Concernant l'accomplissement de la tâche elle-même (elle ne réussira pas davantage au démarrage que dans une session sauf parce que ce démarrage affecterait tous les utilisateurs au lieu d'un seul), la "subtilité" est peut-être que l'on cherche à verrouiller une session à partir de "credentials" (nom/type d'utilisateur et identifiant) qui ne correspondent pas à cette session, on se fait alors logiquement jeter.

On peut peut-être contourner ce problème plus finement en gérant la tâche non pas par voie graphique mais via SCHTASKS en spécifiant les identifiants à utiliser:

https://ss64.com/nt/schtasks.html

Mais on parle un peu dans le vide, le mieux serait que tu mettes en ligne la tâche en question pour voir ce qui y coince.

0

J'ai remarqué que la tâche n'acceptais pas la commande "shutdown /l /f" pour verrouiller la session dans mon script, mais le redémarrage fonctionne.

Alors que sans utiliser le planificateur de tâche mon script fonctionne parfaitement.

Pour les utilisateurs qui ne possède pas de mot de passe, la tache fonctionne au démarrage si la tache à été manqué, mais les utilisateurs avec mot de passe, la tache ne fonctionne pas au démarrage si elle a été manqué et je comprend pas.

Voici mon script :

*****************************************************

SET IMAGE_PATH=C:\ProgramData\Image\background.png
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d %IMAGE_PATH% /f
rundll32.exe user32.dll,UpdatePerUserSystemParameters
TIMEOUT 5
shutdown /r /f

*****************************************************

L'objectif est qu'il change le fond d'écran tous les 3 mois et qu'il redémarre ensuite, de base je voulais qu'il déconnecte la session mais cela ne fonctionne pas.

Trop compliqué de créer la tache via SCHTASKS, y'a trop de paramètres je n'y arriverais pas.

0
brucine Messages postés 14883 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 mai 2024 1 937
9 mars 2023 à 16:19

Bonjour,

Le planificateur de tâches n'accepte pas un script de fermeture comportant le commutateur /l de SHUTDOWN.

Dans le meilleur des cas, si on l'écrit, la tâche ne s'exécutera pas sauf si on l'exécute à la main dans le planificateur de tâches (elle est active) et qu'on sort de la session Windows par le biais habituel, mais ça perd de son intérêt.

Le contournement est capillotracté, il faut créer une tâche:
-Exécuter même si l'utilisateur n'est pas connecté, autorisations maximales
-Laisser le reste par défaut sauf sortie de veille
-Le déclencheur est: Sur un évènement, de base, le Journal Sécurité, l'ID de l'évènement 4647, les 2 cases Activer cochées
-l'action démarre le programme CMD avec l'argument /C "C:\Users\brucine\Desktop\logoff.cmd" où ce qui est entre guillemets est le chemin de mon script.

On m'objectera que cela est bel et bon, mais que puisque le planificateur sur évènement ne comporte par définition pas de date, on est bien avancé, on va donc intervenir sur le script, en partant du principe que si on utilise une nouvelle image, c'est qu'on a remplacé l'ancienne dans la source et qu'il en a été créé une nouvelle à cet effet avec donc une date de modification égale à celle du jour.

Si ce n'est pas le cas, on peut en rajouter une couche avec un script PowerShell modifiant l'attribut LastWriteTime, mais on ne va pas charger la barque, avec un utilitaire, ça va plus vite, par exemple:
https://www.online-tech-tips.com/computer-tips/how-to-change-the-last-modified-date-creation-date-and-last-accessed-date-for-files-and-folders/

Il ne me reste plus qu'à écrire mon script qui compare la date du fichier à celle d'aujourd'hui diminuée de 90 jours, j'ai testé avec un "fichier image" windows_update.cmd dont il faut bien sûr modifier le nom et le chemin en conséquence.

@ECHO OFF
REM Se placer dans le dossier contenant le fichier
CD /D C:\Users\brucine\Desktop
FOR /F %%a IN ('dir windows_update.cmd^|find /i "windows_update.cmd"') DO SET FileDate=%%a 
FOR /F "usebackq" %%j IN (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-90^)^; $date.ToString^('dd/MM/yy'^)`) DO SET OldDate=%%j
IF %OldDate% LEQ %FileDate% (GOTO MONSCRIPT) ELSE (GOTO RIEN)

:MONSCRIPT
echo ecrire ce que je veux
GOTO :END

:RIEN
echo circulez, y'a rien a voir

:END
0