17/11/2024

AstucesPowerShell

Afficher une notification sur Windows 10 avec PowerShell

I. Présentation

Les utilisateurs de Windows 10 sont certainement familiers avec les notifications au sein du système d'exploitation, ces dernières apparaissent sur déclenchement de la part d'une de vos applications, par exemple : vous recevez un e-mail, votre antivirus détecte une infection, votre ordinateur passe en mode économie d'énergie, etc... Sachez qu'il est possible de créer et d'afficher ses propres bulles de notification dans Windows 10 grâce à PowerShell.

Les commandlets pour réaliser cette opération ne sont pas intégrés par défaut, on va s'appuyer une fois de plus sur la communauté PowerShell et plus particulièrement sur le module Burnt Toast, que l'on pourra traduire en français par "Pain grillé". Voilà le lien vers le module : Burnt Toast for PowerShell

L'objectif de ce tutoriel est de vous montrer comment créer une notification, libre à vous ensuite de greffer cette fonctionnalité dans vos scripts pour plus d'interaction avec l'environnement de l'utilisateur.

La version vidéo de ce tutoriel est disponible sur YouTube :

 

II. Installer le module Burnt Toast

On va commencer par installer le module Burnt Toast, simplement à l'aide d'une console PowerShell :

Install-Module BurntToast

L'installation s'effectue rapidement.

Ensuite, on peut en profiter pour lister les cmdlets disponibles :

PS C:\> Get-Command -Module BurntToast

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-BTFunctionLevel                                0.5.1      BurntToast
Function        New-BTAppId                                        0.5.1      BurntToast
Function        New-BurntToastNotification                         0.5.1      BurntToast
Function        Set-BTFunctionLevel                                0.5.1      BurntToast

Il est à noter que par défaut le module se charge en mode Basic avec un nombre limité de cmdlets, il est possible de passer sur le mode Advanced pour accéder aux fonctions spécifiques de customisation des notifications. Il faudra utiliser la commande suivante et rouvrir sa console PowerShell :

Set-BTFunctionLevel Advanced

Il y aura plus de cmdlets :

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-BTFunctionLevel                                0.5.1      BurntToast
Function        New-BTAction                                       0.5.1      BurntToast
Function        New-BTAppId                                        0.5.1      BurntToast
Function        New-BTAudio                                        0.5.1      BurntToast
Function        New-BTBinding                                      0.5.1      BurntToast
Function        New-BTButton                                       0.5.1      BurntToast
Function        New-BTContent                                      0.5.1      BurntToast
Function        New-BTContextMenuItem                              0.5.1      BurntToast
Function        New-BTImage                                        0.5.1      BurntToast
Function        New-BTInput                                        0.5.1      BurntToast
Function        New-BTSelectionBoxItem                             0.5.1      BurntToast
Function        New-BTText                                         0.5.1      BurntToast
Function        New-BTVisual                                       0.5.1      BurntToast
Function        New-BurntToastNotification                         0.5.1      BurntToast
Function        Set-BTFunctionLevel                                0.5.1      BurntToast
Function        Submit-BTNotification                              0.5.1      BurntToast

 

III. New-BurntToastNotification

Avant de créer une notification avec le cmdlet New-BurntToastNotification, on va effectuer une légère configuration pour déclarer notre "application" qui sera notre pseudo-source qui déclenche l'événement. Sinon vous obtiendrez ce message à chaque création d'une notification :

AVERTISSEMENT : The AppId BurntToast is not present in the registry, please run New-BTAppId to avoid inconsistent Toast behaviour.

Pour créer une nouvelle app, on va utiliser la commande suivante :

New-BTAppId -AppId "IT-Connect"

 

Voici ensuite comment créer une notification, sans paramètre vous aurez une notification par défaut :

New-BurntToastNotification

Ce qui n'est pas très intéressant, mais qui permet de vérifier le bon fonctionnement du module. Pour créer une notification personnalisée :

New-BurntToastNotification -AppId "IT-Connect" -AppLogo "C:\temp\logo.png" -Text "PowerShell Notification" , "This module is very cool ! :-)"

Ci-dessous un schéma réalisé par mes soins pour vous aider à comprendre l'utilité de chaque paramètre, puisque vous pourrez faire le lien entre chaque paramètre et son impact sur l'affichage de la notification :

Dans l'exemple ci-dessus, il y a un paramètre nommé "Sound" qui permet de jouer un son au moment de la notification et que je n'avais pas évoqué. Par défaut, il accepte différentes valeurs correspondantes à des sons prédéfinis. Voyez par vous-même :

Il est à noter que les différentes notifications déclenchées seront visibles directement dans le centre de notifications de Windows 10, comme ceci :

Ce module très simple d'utilisation comme l'on vient de le voir, peut s'avérer très utile pour interagir avec l'environnement utilisateur. Un exemple intéressant que j'ai vu et l'utilisation de ce système de notifications pour suivre les déploiements d'images avec MDT/WDS, je vous oriente vers l'article paru sur SystAndDeploy : MDT et les notifications

Et vous, comment allez-vous exploiter ce module ?

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

17 commentaires sur “Afficher une notification sur Windows 10 avec PowerShell

  • Bonjour,

    Ca a l’air sympa pour passer des messages aux utilisateurs !

    Par contre, avant de déployer ça à grande échelle, est-ce que l’on sait ce que ça installe ? Est-ce clean…?

    Merci pour l’article en tout cas !

    Répondre
    • Bonjour Jeff,

      Je pense que c’est clean, ça installe les fichiers PowerShell du module ainsi qu’une DLL nommée « Microsoft.Toolkit.Uwp.Notifications.dll » et issue d’un projet .NET disponible aussi sur GitHub : https://github.com/Microsoft/UWPCommunityToolkit

      Si tu décides d’utiliser ce module, n’hésite pas à partager avec nous ce que tu as fait, si tu le souhaites 🙂

      Florian

      Répondre
  • Bonjour,

    Article de qualité et bien utile!
    Un grand merci :p

    Répondre
  • Bonjour,
    Tout d’abord tuto bien détaillé 😉
    Mais petite question,
    ecce que cela fonctionne sur Windows 10 pro pour faire le test, car perso j’ai plein de message d’erreur coté powershell(exécuté en admin bien sur).
    Ou faut-il un Os serveur.(à l’heure où j’écris le poste je n’en est pas sous la main)
    Merci d’avance.

    Répondre
    • Bonsoir,

      Oui ça fonctionne sous Windows 10, d’ailleurs pour le tuto je l’ai fait depuis mon PC sous Windows 10. Quel est le message d’erreur PowerShell ? Le module est bien importé ?

      Bonne soirée
      Florian

      Répondre
  • Bonjour,

    Un petit retour lié à la sécurité sur Windows 10 :

    Pour pouvoir installer un module il faut lancer la console PowerShell en tant qu’administrateur ;
    Ensuite pour pouvoir installer BurntToast il faut :
    – avoir installé le fournisseur NuGet : Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
    – et passer la stratégie d’exécution PowerShell de « Restricted » (par défaut) à « Unrestricted » : Set-ExecutionPolicy Unrestricted

    Je ne sais pas encore comment je vais utiliser cette fonctionnalité, mais c’est sympa comme tout. Merci pour la découverte ?

    Répondre
  • Bonjour,

    Merci pour cet article.
    Y a t il un moyen de pousser ces notifications à tous les utilisateurs connectés ?
    Si par exemple le script est lancé depuis un compte system et que Florian utilise le poste, ce dernier aura-t-il la notification ?

    Merci

    Répondre
  • Bonjour. Je ne sais pas si cela est possible avec ce module mais voilà ce que je voudrais faire:
    Envoyer des notifications à d’autres PC (sous windows 10) qui sont sur le même réseau wifi ( via leur adresse IP ou leur adresse MAC).
    Merci. Cordialement
    Christophe

    Répondre
    • Bonjour Christophe,

      Je n’ai jamais essayé mais la question est bonne. L’idée qui me vient c’est qu’il faut installer le module sur tous les PC cibles et ensuite il faudrait ouvrir une session PowerShell distante sur le PC pour exécuter la commande sur le poste directement.

      Florian

      Répondre
  • Bonjour,

    Savez-vous s’il est possible de modifier le temps d’affichage de la notification ? Peut-on faire en sorte qu’il reste affiché jusqu’à une action utilisateur ?

    Merci par avance.

    Aurélien

    Répondre
    • Si tu utilise le paramètre -SnoozeAndDismiss je pense que ça reste affiché jusqu’ ce que l’utilisateur choisisse Snooze ou Dismiss

      Répondre
  • Bonjour,

    J’ai suivie le tuto, les notification s’envoie bien mais cette erreur apparait : Windows.UI.Notifications.NotificationData] introuvable

    Doit-je l’ignorer ?

    Répondre
  • Bonjour,
    excellent et très intéressant !
    Mais dès que j’utilise -AppId ça ne marche plus !
    Ai-je loupé quelque chose ?

    Répondre
  • Bonjour,

    Tous d’abord, merci pour cette article très bien expliqué !

    Je développe une application web vue.js/symfony et je souhaiterais envoyer des notifications vers windows, est-ce que c’est possible avec ce module ? Comment puis-je faire ?

    Je vous remercie par avance !

    Répondre
    • Bonjour, je suis entrain de tester l’ utilisation de ce module burntToast sur mon Windows serveur 2022 est il normal que cette n’affiche ni de notification ni de message d’ erreur ?
      Merci d’ avance

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.