Wenn Sie also auf Ihrem Windows-Rechner schnell eine Benachrichtigung oder ein Popup-Fenster benötigen – beispielsweise für eine Skriptwarnung, eine Erinnerung oder einfach nur, um jemanden zu ärgern (was ich natürlich nie tun würde) –, ist PowerShell die Lösung. Es mag etwas ungewöhnlich klingen, aber Sie können damit einfache modale Dialoge oder Toast-Benachrichtigungen öffnen, ohne eine zusätzliche App zu benötigen. Allerdings ist PowerShell nicht narrensicher: Manchmal verhalten sich diese Popups je nach Windows-Version, Berechtigungen oder aktivierten Komponenten unterschiedlich. Auf manchen Systemen wird die Nachricht möglicherweise nicht angezeigt oder es kann zu einem unerwarteten Absturz kommen. Trotzdem ist es einen Versuch wert, da PowerShell integriert ist. Auf einem Rechner funktionierte es einwandfrei, auf einem anderen… eher weniger. Denn natürlich muss Windows es einem unnötig schwer machen.
So zeigen Sie Pop-up- oder Toast-Meldungen in Windows mit PowerShell an
Ein einfaches Popup mit Wscript anzeigen
Wenn Sie die klassische modale Benachrichtigungsbox bevorzugen, die so lange auf dem Bildschirm bleibt, bis sie geschlossen wird, ist das Wscript-Shell-Objekt unkompliziert. Es ist quasi in Windows integriert und eignet sich gut für einfache Benachrichtigungen. Führen Sie dazu folgenden Befehl in PowerShell aus:
$wshell = New-Object -ComObject Wscript. Shell $output = $wshell. Popup("The report generation script is successfully completed!")
Dadurch öffnet sich ein Fenster mit einer OK-Schaltfläche, die die Skriptausführung anhält, bis Sie darauf klicken. Ideal für Warnungen oder einfache Hinweise. Wenn Sie eine Abfrage mit Ja/Nein-Optionen bevorzugen (gut geeignet, um Berechtigungen oder Bestätigungen einzuholen), versuchen Sie Folgendes:
$Output = $wshell. Popup("The script completed successfully. Do you want to view a report?", 0, "Report Status", 4 + 32)
Hier bedeutet der zweite Parameter (0), dass das Fenster so lange geöffnet bleibt, bis es angeklickt wird. Die Typ- Flags kombinieren Schaltflächen und Symbole. Beispielsweise bedeutet 4+32 „Ja/Nein“ mit einem Fragezeichensymbol. Klickt der Benutzer auf „Ja“, gibt der Befehl 6 zurück; bei „Nein“ 7. Sie können Antworten wie die folgenden verarbeiten:
switch ($Output) { 7 { $wshell. Popup('Pressed No') } 6 { $wshell. Popup('Pressed Yes') } default { $wshell. Popup('Invalid input or timeout') } }
Zusätzliche Dinge, mit denen ich manchmal herumexperimentieren musste: Stellen Sie sicher, dass Sie PowerShell als Administrator ausführen, wenn sich das Skript nicht ausführen lässt, insbesondere auf stark eingeschränkten Rechnern.
Senden von Toast-Benachrichtigungen mit dem BurntToast-Modul
Für etwas Schickeres – wie eine Benachrichtigung, die neben der Uhr angezeigt wird – ist die integrierte Toast-Benachrichtigung die beste Wahl. Sie wirkt moderner und ist weniger aufdringlich. Aber Achtung: Sie benötigt oft das Drittanbietermodul BurntToast. Zur Installation gehen Sie einfach wie folgt vor:
Install-Module -Name BurntToast -Force -Scope CurrentUser
Nach der Installation können Sie Benachrichtigungen wie diese versenden:
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
Dadurch erscheint ein kleines Banner-Pop-up, das sich nach wenigen Sekunden automatisch schließt. Sehr praktisch für Benachrichtigungen, die Ihren Arbeitsablauf nicht unterbrechen sollen. Das Symbolargument ist optional, verleiht dem Ganzen aber eine ansprechende Note. Meiner Meinung nach besser als das langweilige Standardsymbol.
Pop-up-Meldungen auf entfernten Rechnern
Möchten Sie dies auf entfernte PCs ausweiten? Ja, das ist mit einigen integrierten Befehlen ebenfalls möglich – sofern Sie über die entsprechenden Berechtigungen verfügen. Verwenden Sie qwinsta, um die aktiven Sitzungen auf dem entfernten Rechner aufzulisten:
qwinsta /server:RemotePCName
Sobald Sie die Sitzungs-ID gefunden haben, können Sie eine Nachricht senden mit:
MSG username /SERVER:RemotePCName "This is a message from your friendly neighborhood admin."
Wenn Sie eine Nachricht an alle eingeloggten Benutzer senden möchten, tauschen Sie diese usernamemit *:
MSG * /SERVER:RemotePCName "The server will restart in 10 minutes. Save your work."
Für grafische Benachrichtigungen benötigen Sie, sofern Sie kein komplexes benutzerdefiniertes Skript verwenden, wahrscheinlich benutzerdefinierte PowerShell-Skripte wie RemoteSendToasNotification.ps1 (von GitHub).Beachten Sie, dass WinRM (Windows Remote Management) auf dem Zielrechner aktiviert und konfiguriert sein muss, was nicht immer einfach ist.
Theoretisch macht das Erstellen von Benachrichtigungen per Skript unter Windows also richtig Spaß. In der Praxis ist es allerdings eher ein Versuch-und-Irrtum-Verfahren – mal funktioniert es, mal nicht. Aber wenn man sich selbst oder andere benachrichtigen möchte, ohne manuell herumklicken zu müssen, sind diese Methoden erstaunlich brauchbar.