5 votes

Comment exécuter un script de batch à l'extinction dans Windows 10 édition familiale?

Je dois exécuter des scripts batch lors de l'arrêt de Windows 10 édition Familiale, à la fois lors des redémarrages manuels et des redémarrages automatiques dus aux mises à jour automatiques de Windows. Cela doit fonctionner même lorsque aucun utilisateur n'est connecté. Jusqu'à présent, j'ai essayé :

  1. Tâche planifiée à l'événement 1047 (jetée, n'attendra pas que mon script se termine).
  2. Ajout manuel des scripts d'arrêt de la stratégie de groupe dans le registre et dans C:\WINDOWS\SYSTEM32\GroupPolicy (jetée, ne fonctionnera pas car il semble que la fonctionnalité soit désactivée par des contraintes imposées par l'édition de Windows).
  3. Logiciels tiers. Assez étrangement, je n'ai pas trouvé d'outil gratuit qui s'exécute en tant que service et me permette d'ajouter des fichiers .bat à exécuter lors de l'arrêt du système (ou du service).
  4. J'ai essayé AutoHotkey + NSSM [The Non-Sucking Service Manager] en tant que service personnalisé, mais les événements d'AutoHotkey ne se déclencheraient pas à chaque fois.

Je suis assez désenchanté par cette limitation.
Des idées ?

Edit1: Prenez en compte les mises à jour automatiques de Windows.
Edit2: Cela doit fonctionner même lorsque aucun utilisateur n'est connecté.
Edit4: J'attends le prochain redémarrage automatique de Windows en raison d'une mise à jour pour voir si l'exécution de shutdown -a au début du fichier batch, puis shutdown -s à la fin dans une tâche planifiée à l'événement d'arrêt fonctionne.
Edit5: Dommage, ça n'a pas fonctionné. La tâche planifiée n'a pas démarré : Erreur : "Arrêt en cours". Je suppose que mon seul espoir est un outil tiers.

2voto

GroggyOtter Points 194

J'ai déjà fait cela avec AutoHotkey auparavant. Ce script est testé et fonctionne.

J'ai créé un fichier batch de base qui créera un "fichier de test" sur le bureau. Il suffit d'exécuter le fichier AHK et de le laisser s'exécuter. Lorsque le script détecte un arrêt, il exécutera le fichier batch.

Assurez-vous de définir le chemin vers votre fichier texte en haut du script.

Script AutoHotkey :

;==============================
;Définir le chemin vers votre fichier batch.
chemin    := "C:\batch.bat"
;==============================

; Exécuter le script en tant qu'administrateur. Cela permettra à votre fichier batch d'être exécuté avec les autorisations administratives.
if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"  ; Nécessite v1.0.92.01+
   ExitApp
}

; Autoriser une seule instance du script à s'exécuter.
#SingleInstance, Force

; Si vous ne souhaitez pas afficher une icône dans la barre d'état,
; retirez le point-virgule de la ligne ci-dessous.
;#NoTrayIcon

; Lorsque le script détecte WM_QUERYENDSESSION (un arrêt), exécutez la fonction OnShutDown.
OnMessage(0x11, "OnShutDown")
return

OnShutDown(){
    ; Exécuter le fichier batch.
    Run, % chemin
    ExitApp
}

Fichier batch que j'ai utilisé pour les tests :

echo Écrire un fichier avant l'arrêt > %USERPROFILE%\Desktop\ShutdownTest.txt

Si vous le souhaitez, vous pouvez toujours exécuter vos commandes de fichier batch directement via AHK.

0voto

Jeter-work Points 513

Mise à jour: Si c'est quelque chose qui doit être fait avant que le prochain utilisateur se connecte, le mettre dans le script de démarrage de la machine pourrait répondre à votre besoin. Si c'est quelque chose qui doit être fait avant l'arrêt de l'alimentation, le script d'arrêt est la réponse.

Si l'édition Home ne vous permet pas de modifier la stratégie locale pour que ces scripts fonctionnent, alors c'est une limitation de l'édition Home et vous devrez peut-être mettre à niveau. Cependant, TechNet ne précise pas comment configurer un script d'arrêt au-delà de Windows #.

Aussi, le script d'arrêt de la machine s'exécutera avec les autorisations de l'ordinateur. Le script de déconnexion de l'utilisateur s'exécutera avec les autorisations de l'utilisateur connecté.

Utiliser un script batch pour arrêter? Il suffit d'utiliser la commande d'arrêt ("shutdown -t 0") à la fin de votre script d'arrêt. Mettez un raccourci vers le script sur votre bureau, utilisez une icône de bouton d'alimentation. (Réponse supprimée basée sur l'arrêt d'un seul utilisateur par script plutôt que sur l'option d'arrêt du menu Démarrer).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X