Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PowerShell]Lancer un script avec le planificateur

Sujet résolu
    17 mai 2022 à 16:49:40

    Bonjour,

    Je souhaiterais lancer le script ci-dessous via le planificateur de tâche Windows. Habituellement, je n'ai aucun soucis. Le script fonctionne parfaitement bien lorsque je le lance manuellement, depuis PowerShell ISE. Mais là, j'ai comme l'impression que le planificateur n'exécute pas le script. Auriez vous une idée ?

    ##############################################################################################
    #                                                                                            # 
    #                                           Script                                           #
    #                                                                                            #
    ##############################################################################################
    
    $Recuperer_Process = Get-Process -Name notepad.exe -ErrorAction SilentlyContinue
    If ($Recuperer_Process) {
        ""
    } else {
        Send-MailMessage -From 07_Supervision_BBY@vsphere.bot -To mail@mail.com,mail2@mail2.com -Subject "Alarme" -Body "Test" -SmtpServer smtp.server.fr
    
        # Temps d'attente du script, si aucun choix n'est fait par l'utilisateur.
        $Attente = 30
    
        # Message affiché et titre de la fenêtre popup
        $Message = "Notepad ne fonctionne plus et Windows va devoir redémarrer. Assurez vous d'enregistrez votre travail et de fermer `rtoutes les applications ouvertes. `r`r - Cliquez sur 'OK' pour redémarrer maintenant `r`r - Cliquez sur 'Annuler' pour annuler le redémarrage"
        $Titre = "  ATTENTION !"
    
        $Prompt = New-Object -ComObject WScript.Shell
    
        $AffichageMessage = $Prompt.popup($Message,$Attente,$Titre,1)
        If($AffichageMessage -eq 1) {
            Restart-Computer -Force
        }
        If($AffichageMessage -eq 2) {
            break
        }
        If($AffichageMessage -eq -1) {
            Restart-Computer -Force
        }
    }



    • Partager sur Facebook
    • Partager sur Twitter
      17 mai 2022 à 17:42:21

      Tu as regardé ce que dit l'historique de lancement de la tâche ? 

      Le déclencheur de la tâche est conforme à ton besoin ?

      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2022 à 9:26:12

        Tout m'a l'air correct au niveau de l'historique de lancement de la tâche.

        Et pour le déclencheur ça correspond bien à ce que je souhaite. Il est lancé une première fois, puis il se relance toutes les 5 minutes indéfiniment.

        C'est comme si ça se lançait en tâche de fond ou quelque chose comme ça. Quand je lance le script à la main (dans Powershell ISE) tout fonctionne parfaitement bien. Mais des que je le planifie avec le planificateur de tâche, là tout ne fonctionne plus. Ma popup n'apparait pas alors qu'elle devrait. 

        -
        Edité par Squaar 18 mai 2022 à 9:51:28

        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2022 à 11:29:00

          Si tu la lances via la commande exécutée du planificateur de tâches, elle se passe comme attendue ? (il faudra peut-être l'arrêter avant ou après pour refaire un test)

          Comme tu la répètes toutes 5 minutes, elle apparait "en attente" dans la liste des tâches quand elle n'est pas en cours.

          Sinon, il y a peut-être un problème d'interaction qui fait que la popup ne peux pas s'ouvrir ainsi; peut-être que dans l'action "démarrer le programme" il faut lancer le script depuis une commande cmd (cmd /c [chemin et nom du script]) (tu peux essayer cette commande dans une invite de commande (avec /k ou lieu de /c) pour voir si il ne remonte pas d'erreur)

          • Partager sur Facebook
          • Partager sur Twitter
            18 mai 2022 à 13:41:39

            Si je la lance via la commande exécuté, rien ne se passe (du moins au premier plan). Je n'arrive pas à voir de mouvements dans le gestionnaire de tâches.

            Je pense oui qu'elle apparait en attente :

            Pour la commande que tu m'a passé, je ne sais pas si je l'ai bien exécutée mais ça ne me renvoi pas d'erreur :

            • Partager sur Facebook
            • Partager sur Twitter
              18 mai 2022 à 13:59:28

              au temps pour moi, la commande pour lancer un script powershell c'est powershell -File [chemin du script]

              la commande que tu as entré devrait au moins ouvrir le script avec le bloc notes (ou l'éditeur défini pour ouvrir ces fichiers)

              voir https://blog.netwrix.fr/2019/03/06/comment-automatiser-les-scripts-powershell-avec-le-planificateur-de-taches/ 

              • Partager sur Facebook
              • Partager sur Twitter
                18 mai 2022 à 15:38:32

                D'accord, il me semble que j'avais déjà vu cette commande quelque part. Du coup, ça fonctionne bien avec cette commande là :

                Et l'autre commande que tu m'avais donné fonctionne également (sans le cmd k/). Ça m'ouvre bien notepad avec mon script.

                Dans le planificateur de tâche, j'ouvre bien mon script avec Powershell :

                • Partager sur Facebook
                • Partager sur Twitter
                  18 mai 2022 à 19:45:29

                  quand tu le lances "manuellement" via le planificateur et le bouton Exécuter ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 mai 2022 à 19:48:17

                    Bonsoir,

                    Et l'argument '-File' est bien préciser dans le planificateur de tâche ? (Champ : "Ajouter des arguments")
                    On dirait que non sur ton screenshot.
                    Exemple : -File "path\script.ps1"

                    -
                    Edité par Zaibai 18 mai 2022 à 19:50:25

                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 mai 2022 à 8:54:09

                      umfred : Quand je le lance depuis le cmd pas de soucis (avec les commandes que tu m'a donné). De même quand je le lance manuellement depuis PowerShell ISE. Il n'y a que quand je suis dans le planificateur de tâches et que je clique sur ma tâche puis sur "Exécuter" qu'il ne se lance pas (ou du moins pas correctement).

                      Zaibai : D'accord, je ne savais pas. Effectivement j'ai juste mis le chemin de façon "brute" (sans le -File). Je test ça et je vous dis si ça change quelque chose.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 mai 2022 à 10:20:19

                        en principe ça ne devrait pas changer grand chose avec ou sans -File

                        Sinon au lieu de lancer powershell dans le planificateur, lance cmd avec en argument /k powershell -File [chemin du script] pour voir

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 mai 2022 à 14:38:50

                          Zaibai : J'ai testé en rajoutant dans le champs arguments l'option -File. Mais ça ne fonctionne toujours pas.

                          umfred : J'ai testé avec la commande que tu me donne. Quand je la lance depuis le CMD, ça fonctionne niquel. Je l'ai mis ensuite dans le planificateur de tâches mais ça ne fonctionne pas non plus. Même en faisant "Exécuter" à partir du planificateur de tâches. Par contre dans le gestionnaire de tâches je vois le cmd donc je suppose que ça doit fonctionner mais en arrière plan.

                          Je commence à croire que ça viens de mon script. Avant j'utilisais ça : 

                          Add-Type -AssemblyName Microsoft.VisualBasic
                          [Microsoft.VisualBasic.Interaction]::MsgBox("Mon Message","OKOnly,SystemModal,Exclamation", "Attention !")


                          Et ça fonctionnais bien, ne plus la fenêtre ce mettais au premier plan (donc impossible de la louper). Mais avec ce type de MsgBox, on ne peux pas mettre de délais, si l'utilisateur ne réponds pas au bout d'un certain moment. 

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 mai 2022 à 15:59:34

                            C'est un peu ce que je craignais, un problème d'interaction avec le bureau. Tu le lances via un utilisateur particulier sur l'onglet général ? 

                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 mai 2022 à 16:07:29

                              Oui je le lance avec une des deux sessions (je précise que c'est pour le boulot). Je te met une capture d'écran :

                              Après, c'est vrai que je n'ai pas essayé de lancer la tâche avec un autre utilisateur. Mais cette session à les droits admin normalement. On a deux sessions (AMH avec les droits admin, c'est la première créé et celle ci). Ah et je ne pense pas que ça change quelque chose, mais je suis sur une VM (machine virtuelle) qui fait partie d'un serveur.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 mai 2022 à 19:05:04

                                mais je me demande si il ne faudrait pas choisir "N'exécuter que si un utilisateur a ouvert une session"

                                Après pour revenir au fond du sujet, redémarrer un pc pour relancer une tâche ou un service (d'après la capture), ce n'est pas un peu trop ? il ne peut pas être redémarrer "manuellement" (via le script) avec un net start [service] ?

                                -
                                Edité par umfred 19 mai 2022 à 19:05:21

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 mai 2022 à 10:21:07

                                  Super, c'était bien ça :D . Le script fonctionne parfaitement maintenant. Merci énormément. 

                                  Alors pour le redémarrage du PC, c'est à cause du logiciel que l'on utilise. Il est un peu capricieux et ne redémarre pas toujours, donc on préfère redémarrer la VM entièrement.

                                  Par contre, petite question : Du coup, si la session se verrouille, le script ne tournera plus ? Et lorsque le PC redémarre, il faut se connecter au moins une fois ou pas, pour que le script se lance ?

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    20 mai 2022 à 11:57:21

                                    vu que la session est ouverte, le script devrait fonctionner (le verrouillage n'est pas une déconnexion); et donc oui, il faut ouvrir une session, sinon pas de message possible (de toute façon, pour voir un message il faut être connecté ^^), et le script ne se lancera pas du fait que l'on a choisit qu'il fallait ouvrir une session pour lancer le script.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 mai 2022 à 12:09:47

                                      D'accord, super merci. J'ai fais les test et effectivement même verrouillé ça fonctionne. Et même après un redémarrage, sans se connecter le script tourne encore. Je verrais mais au moins tout fonctionne.

                                      Après le message est juste là pour prévenir si un utilisateur est sur la VM. Mais en principe, quasiment personne ne se connecte (c'est prévu comme ça).

                                      En tout cas merci encore ;)

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      [PowerShell]Lancer un script avec le planificateur

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown