Comment exécuter un script PowerShell sans afficher de fenêtre

  1. Utiliser le paramètre -WindowStyle Hidden de PowerShell pour exécuter un script PowerShell sans afficher une fenêtre
  2. Utiliser le Planificateur de tâches pour exécuter un script PowerShell sans afficher une fenêtre
  3. Utiliser des outils tiers pour exécuter un script PowerShell sans afficher une fenêtre
  4. Conclusion
Comment exécuter un script PowerShell sans afficher de fenêtre

PowerShell de Microsoft est un outil qui est par défaut présent avec les systèmes d’exploitation Windows, permettant aux utilisateurs de Windows d’utiliser des fonctions d’automatisation basées sur des interfaces et des commandes en ligne de commande.

PowerShell est un outil de script et un outil d’automatisation ; il nécessite donc parfois que l’application s’exécute en arrière-plan de manière silencieuse. À travers cet article, nous allons voir comment faire fonctionner l’application PowerShell silencieusement en arrière-plan, en exécutant des commandes en arrière-plan.

Il existe des outils tiers que vous pouvez intégrer avec les outils PowerShell pour réaliser la fonctionnalité cachée de PowerShell. Cependant, il y a des moyens simples de faire cela uniquement avec PowerShell.

Utiliser le paramètre -WindowStyle Hidden de PowerShell pour exécuter un script PowerShell sans afficher une fenêtre

Une façon simple de cacher la fenêtre du script serait d’utiliser le type hidden comme un style de fenêtre. Une fenêtre d PowerShell de style fenêtre serait brièvement affichée au début puis cachée pendant l’exécution du script.

Le paramètre -WindowStyle dans PowerShell vous permet de contrôler l’apparence de la fenêtre PowerShell. Le paramètre -WindowStyle Hidden, lorsqu’il est appliqué, garantit que la fenêtre PowerShell n’est pas affichée pendant l’exécution du script.

Cela est particulièrement utile pour les tâches qui nécessitent de l’automatisation sans interaction utilisateur ou lorsque vous ne souhaitez pas interrompre le flux de travail de l’utilisateur.

Exécuter un script PowerShell avec le paramètre -WindowStyle Hidden est simple. Ouvrez une fenêtre PowerShell et utilisez la commande suivante :

PowerShell.exe -WindowStyle Hidden { Script you want to execute.. }

Voici ce que chaque partie de la commande fait :

  • PowerShell.exe : Initie un nouveau processus PowerShell.
  • -WindowStyle Hidden : Définit le style de la fenêtre sur caché, empêchant l’affichage de la fenêtre PowerShell.
  • Le script que vous souhaitez exécuter est contenu dans des accolades {}.

L’exécution de PowerShell de la commande ci-dessus est montrée dans l’image ci-dessous.

Exécution PowerShell

Une fois saisie, la fenêtre disparaît, mais l’application sera en cours d’exécution en arrière-plan. Comme montré dans l’image ci-dessous des processus en arrière-plan, PowerShell fonctionne comme un processus en arrière-plan.

Processus en arrière-plan

Dans cette méthode, l’utilisateur verrait initialement PowerShell. Il n’est donc pas véritablement caché des utilisateurs finaux. Même si la tâche est planifiée à l’avance, la fenêtre apparaîtrait et se cacherait rapidement.

Utiliser un fichier Batch

Si vous traitez un script plus complexe ou envisagez de l’exécuter plusieurs fois, cette méthode (fichier batch avec la commande PowerShell) pourrait être plus organisée et efficace.

Créez un fichier batch (par exemple, run_script.bat) avec le contenu suivant :

@echo off
powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • @echo off : Cette commande empêche le fichier batch d’afficher ses commandes dans la fenêtre de console.
  • powershell -WindowStyle Hidden -File "C:\path\to\script.ps1" : Cette ligne appelle PowerShell avec les paramètres nécessaires et le chemin vers le script.

Les deux codes ci-dessus atteignent le même objectif d’exécuter un script PowerShell sans afficher une fenêtre, mais ils utilisent des approches légèrement différentes. Cependant, il existe d’autres méthodes simples pour réaliser la véritable fonctionnalité cachée de PowerShell.

Utiliser le Planificateur de tâches pour exécuter un script PowerShell sans afficher une fenêtre

Le Planificateur de tâches est un utilitaire Windows qui vous permet d’automatiser des tâches à des moments ou à des événements spécifiques. Il offre une large gamme d’options de personnalisation, ce qui en fait un outil polyvalent pour gérer diverses tâches sur votre ordinateur.

Création d’une nouvelle tâche

  1. Ouvrez le Planificateur de tâches : Vous pouvez le faire en recherchant "Planificateur de tâches" dans le menu Démarrer de Windows.
  2. Naviguez vers "Actions" : Cliquez sur "Créer une tâche" dans le volet de droite.

Configuration de la tâche

  1. Nommer la tâche : Fournissez un nom et une description pour votre tâche. Cela devrait être quelque chose de descriptif qui reflète ce que fait la tâche.
  2. Choisissez le déclencheur de tâche : Sélectionnez comment vous souhaitez déclencher la tâche. Les options incluent quotidiennement, hebdomadairement, mensuellement, à la connexion, etc. Choisissez le déclencheur qui correspond le mieux à vos besoins.

Configuration des déclencheurs

  1. Sélectionner les détails du déclencheur : Selon le déclencheur que vous choisissez, vous devrez fournir des détails supplémentaires. Par exemple, si vous choisissez "Quotidien", vous spécifierez l’heure et la fréquence.
  2. Paramètres avancés : Vous pouvez définir des options plus avancées en cliquant sur "Paramètres avancés". Cela vous permet de personnaliser davantage quand et à quelle fréquence la tâche s’exécute.

Spécification des actions

  1. Sélectionnez l’action : Dans l’étape "Actions", choisissez "Nouveau" > "Démarrer un programme" puisque nous allons exécuter un script PowerShell.
  2. Programme/script : Parcourez et sélectionnez powershell.exe sur votre système.
  3. Ajouter des arguments (facultatif) : Entrez ce qui suit :
-WindowStyle Hidden -File "C:\path\to\script.ps1"

Remplacez "C:\path\to\your\script.ps1" par le chemin réel vers votre script PowerShell.

Démarrer un programme

Activation des options de sécurité

Cochez la case qui indique "Exécuter avec les privilèges les plus élevés". Cela garantit que le script s’exécutera avec des privilèges d’administrateur si nécessaire.

Vous pouvez également cliquer sur Exécuter que l'utilisateur soit connecté ou non, et cela n’affichera jamais la fenêtre PowerShell lorsque la tâche s’exécute.

Planificateur de tâches

Compléter et tester la tâche

Examinez le résumé de la tâche et cliquez sur "OK" pour la créer.

Vous pouvez tester la tâche en cliquant avec le bouton droit sur elle dans le Planificateur de tâches et en sélectionnant "Exécuter". Cela exécutera la tâche immédiatement selon les déclencheurs que vous avez définis.

Le Planificateur de tâches vous permet d’automatiser des tâches à des intervalles ou des événements précis. En l’utilisant pour déclencher PowerShell avec les arguments appropriés, vous pouvez exécuter des scripts silencieusement.

Cependant, cette méthode pourrait affecter la fonctionnalité de certains scripts que vous tentez d’utiliser. Par conséquent, vous pouvez également utiliser des outils tiers ou des extensions communautaires pour PowerShell.

Utiliser des outils tiers pour exécuter un script PowerShell sans afficher une fenêtre

Les outils tiers étendent les capacités de PowerShell en fournissant des fonctionnalités et des caractéristiques supplémentaires. En ce qui concerne l’exécution de scripts PowerShell sans afficher une fenêtre, ces outils jouent un rôle crucial dans l’automatisation des tâches de manière fluide.

Utiliser PSExec

PSExec est un outil polyvalent de Sysinternals (maintenant partie de Microsoft) qui vous permet d’exécuter des processus à distance. Il peut être utilisé pour exécuter des scripts PowerShell silencieusement.

psexec -d -s powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • psexec : Initie PSExec.
  • -d : Instruis PSExec de ne pas attendre que la commande se termine.
  • -s : Exécute la commande avec des permissions système.
  • powershell -WindowStyle Hidden -File "C:\path\to\script.ps1" : Exécute le script PowerShell silencieusement.

Utiliser NSSM (Non-Sucking Service Manager)

NSSM est un gestionnaire de services pour Windows qui vous permet d’exécuter n’importe quelle application comme un service. Cela peut être particulièrement utile pour exécuter des scripts silencieusement en arrière-plan.

  1. Téléchargez et installez NSSM depuis le site officiel.
  2. Ouvrez une invite de commande avec des privilèges administratifs.
  3. Exécutez la commande suivante pour créer un nouveau service :
nssm install <ServiceName> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
  • nssm install <ServiceName> : Installe un nouveau service avec le nom spécifié.
  • "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" : Spécifie le chemin vers l’exécutable de PowerShell.
  • "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1" : Passe des paramètres à PowerShell, lui instruisant d’exécuter le script silencieusement.

Conclusion

PowerShell est un outil d’automatisation puissant pour les utilisateurs de Windows, offrant de vastes capacités de ligne de commande. Dans les scénarios où une exécution silencieuse en arrière-plan est nécessaire, plusieurs méthodes sont disponibles.

  • Utiliser le paramètre -WindowStyle Hidden : Cela permet une brève visibilité de la fenêtre PowerShell avant de la cacher pendant l’exécution du script. C’est adapté pour les tâches nécessitant de l’automatisation sans interaction utilisateur.
  • Fichiers batch : Organisés pour exécuter des scripts complexes ou répétés. Les fichiers batch appellent PowerShell avec les paramètres nécessaires.
  • Planificateur de tâches : Offre une automatisation à des moments ou événements spécifiques. En le configurant pour exécuter PowerShell avec les bons paramètres, les scripts peuvent être exécutés silencieusement.
  • Outils tiers (par exemple, PSExec, NSSM) : Étendent les capacités de PowerShell, permettant l’exécution de scripts sans fenêtre.

Choisissez la méthode qui correspond le mieux à vos besoins et flux de travail spécifiques.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.