Hoe toon je een pop-up- of ballonmelding met PowerShell?

Dus, als je snel een melding of pop-upbericht op je Windows-computer wilt weergeven – bijvoorbeeld voor een scriptwaarschuwing, een herinnering of gewoon om iemand te irriteren (niet dat ik dat zelf doe, hoor) – dan biedt PowerShell uitkomst. Het is misschien een beetje vreemd, maar je kunt het gebruiken om eenvoudige modale dialoogvensters of toastmeldingen te openen zonder dat je een ingewikkelde app van derden nodig hebt. Het is echter niet waterdicht: soms gedragen deze pop-ups zich anders, afhankelijk van de Windows-versie, de machtigingen of of bepaalde componenten zijn ingeschakeld. Op sommige systemen wordt het bericht mogelijk niet weergegeven of crasht het programma onverwacht. Toch is het het proberen waard, aangezien het ingebouwd is, en op de ene computer werkte het prima, op de andere… niet zo best. Want Windows moet het natuurlijk altijd ingewikkelder maken dan nodig is.

Hoe je pop-up- of toastberichten in Windows kunt weergeven met PowerShell

Een eenvoudige pop-up weergeven met Wscript

Als je liever het klassieke modale waarschuwingsvenster gebruikt dat op het scherm blijft staan ​​totdat het wordt gesloten, is het Wscript-shellobject eenvoudig te gebruiken. Het is vrijwel standaard ingebouwd in Windows en werkt prima voor simpele meldingen. Voer hiervoor het volgende commando uit in PowerShell:

$wshell = New-Object -ComObject Wscript. Shell $output = $wshell. Popup("The report generation script is successfully completed!")

Hiermee verschijnt een venster met een OK-knop die de uitvoering van het script stopt totdat u erop klikt. Ideaal voor waarschuwingen of eenvoudige meldingen. Als u liever een prompt met Ja/Nee-opties wilt (handig voor het vragen om toestemming of bevestiging), probeer dan:

$Output = $wshell. Popup("The script completed successfully. Do you want to view a report?", 0, "Report Status", 4 + 32)

Hier betekent de tweede parameter (0) dat het venster open blijft totdat erop geklikt wordt, en de Type -vlaggen combineren knoppen en pictogrammen. Bijvoorbeeld, 4+32 betekent “Ja/Nee” met een vraagtekenpictogram. Wanneer de gebruiker op Ja klikt, retourneert de opdracht 6; bij Nee retourneert de opdracht 7. Je kunt reacties als volgt verwerken:

switch ($Output) { 7 { $wshell. Popup('Pressed No') } 6 { $wshell. Popup('Pressed Yes') } default { $wshell. Popup('Invalid input or timeout') } }

Extra zaken waar ik soms mee heb moeten experimenteren: zorg ervoor dat je PowerShell als beheerder uitvoert als het script weigert te werken, vooral op beveiligde machines.

Toast-meldingen verzenden met de BurntToast-module

Voor iets leukers, zoals de melding die naast je klok verschijnt, is de ingebouwde Toast-melding een goede optie. Die is wat moderner en minder opdringerig. Maar let op: je hebt er vaak een module van een derde partij voor nodig, genaamd BurntToast. Om deze te installeren, doe je het volgende:

Install-Module -Name BurntToast -Force -Scope CurrentUser

Na installatie kun je meldingen versturen zoals deze:

New-BurntToastNotification -Text "Wi-Fi network disconnection", "Since your device was connected to a high-speed Ethernet LAN, you have been disconnected from your Wi-Fi network" -AppLogo C:\PS\changenetwork.png

Dit levert een handig klein pop-upbannertje op dat na een paar seconden vanzelf verdwijnt. Erg handig voor meldingen die je workflow niet mogen onderbreken. Het argument voor het pictogram is optioneel, maar geeft het geheel een mooie uitstraling. Naar mijn mening beter dan het saaie standaardpictogram.

Pop-upberichten op externe machines

Dit uitbreiden naar externe pc’s? Jazeker, dat kan ook met een aantal ingebouwde commando’s – mits je de juiste machtigingen hebt. Gebruik qwinsta om de actieve sessies op de externe machine weer te geven:

qwinsta /server:RemotePCName

Zodra je de sessie-ID hebt gevonden, kun je een bericht verzenden met:

MSG username /SERVER:RemotePCName "This is a message from your friendly neighborhood admin."

Als je een bericht naar alle ingelogde gebruikers wilt sturen, vervang dit dan usernamedoor *:

MSG * /SERVER:RemotePCName "The server will restart in 10 minutes. Save your work."

En voor meer grafische meldingen, tenzij je een geavanceerd aangepast script gebruikt, zul je waarschijnlijk aangepaste PowerShell-scripts zoals RemoteSendToasNotification.ps1 (van GitHub) moeten implementeren. Houd er rekening mee dat WinRM (Windows Remote Management) op de doelmachine moet zijn ingeschakeld en geconfigureerd, wat niet altijd even eenvoudig is.

Dit alles maakt het in theorie best leuk om meldingen te scripten op Windows. In de praktijk is het echter een kwestie van uitproberen – soms werkt het, soms niet. Maar als je jezelf of anderen wilt waarschuwen zonder handmatig te hoeven klikken, zijn deze methoden verrassend goed.