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 ?
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 !
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
Un post bien détaillé, good job !
Merci pour la mention 🙂
Bonjour,
Article de qualité et bien utile!
Un grand merci :p
En autoit une ligne de code suffit pour faire apparaître une notification, compatible de XP à win10:
https://www.autoitscript.fr/autoit3/docs/functions/TrayTip.htm
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.
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
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 ?
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
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
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
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
Si tu utilise le paramètre -SnoozeAndDismiss je pense que ça reste affiché jusqu’ ce que l’utilisateur choisisse Snooze ou Dismiss
Bonjour,
J’ai suivie le tuto, les notification s’envoie bien mais cette erreur apparait : Windows.UI.Notifications.NotificationData] introuvable
Doit-je l’ignorer ?
Bonjour,
excellent et très intéressant !
Mais dès que j’utilise -AppId ça ne marche plus !
Ai-je loupé quelque chose ?
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 !
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