Pomimo faktu, że PowerShell jest językiem konsoli, czasem konieczne jest powiadomienie użytkownika o określonym zdarzeniu lub konieczności wykonania określonej akcji ze skryptu PowerShell. Na przykład wyświetl powiadomienie o zakończeniu jakiegoś długo działającego skryptu PoSh lub o wystąpieniu jakiegoś ważnego zdarzenia.
Najprostszym sposobem wyświetlenia okna z dowolnym testem za pomocą podsystemu skryptów Windows - Wscript.
Poniższy kod wyświetli zwykłe pole tekstowe z niezbędnym tekstem i przyciskiem OK.
$ wshell = New-Object -ComObject Wscript.Shell
$ Output = $ wshell.Popup („Skrypt generowania raportu zakończony”)
Korzystając z różnych właściwości metody Popup, możesz dostosować wygląd modalnego okna komunikatu. W szczególności możesz wrócić do skryptu wyniki odpowiedzi użytkownika na pytanie (Tak / Nie).
$ Output = $ wshell.Popup („Skrypt do generowania raportu jest gotowy! Czy chcesz go wyświetlić na ekranie?”, 0, „Raport jest gotowy”, 4 + 32)
Ogólna składnia i parametry metody Popup:
Popup (,,,)
Parametry:
- - ciąg, tekst wiadomości.
- - opcjonalnie, numer. Liczba sekund, po których okno zostanie automatycznie zamknięte.
- - opcjonalnie, ciąg. Tekst tytułu okna wiadomości.
- - opcjonalnie, numer. Kombinacja flag określa typ przycisków i ikony. Możliwe wartości flag:
- 0 - przycisk OK.
- 1 - Przyciski OK i Anuluj.
- 2 - Przyciski Stop, Powtórz, Pomiń.
- 3 - Przyciski Tak, Nie, Anuluj.
- 4 - Przyciski Tak i Brak.
- 5 - Przyciski powtarzania i anulowania.
- 16 - Ikona zatrzymania.
- 32 - Ikona pytania.
- 48 - Ikona wykrzyknika.
- 64 - Ikona informacji.
Opis: zwraca wartość całkowitą, za pomocą której można dowiedzieć się, który przycisk został naciśnięty przez użytkownika. Możliwe wartości:
- -1 - limit czasu.
- 1 - przycisk OK.
- 2 - Przycisk Anuluj.
- 3 - przycisk Stop.
- 4 - Przycisk powtarzania.
- 5 - Przycisk pomijania.
- 6 - Przycisk Tak.
- 7 - Brak przycisku.
Bardziej atrakcyjne i przyjemnie wyglądające wyskakujące komunikaty (dymki) można wyświetlać w Windows 7, 8.1 i 10 za pomocą Windows Forms API. Poniższy kod programu PowerShell wyświetli komunikat wyskakujący obok panelu powiadomień systemu Windows 10, który automatycznie zniknie po 10 sekundach.
Add-Type -AssemblyName System.Windows.Forms
$ global: balmsg = New-Object System.Windows.Forms.NotifyIcon
$ path = (Get-Process -id $ pid). Ścieżka
$ balmsg.Icon = [System.Drawing.Icon] :: ExtractAssociatedIcon ($ path)
$ balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon] :: Ostrzeżenie
$ balmsg.BalloonTipText = 'To jest tekst wyskakującego komunikatu dla użytkownika systemu Windows 10'
$ balmsg.BalloonTipTitle = "Ostrzeżenie $ Env: USERNAME"
$ balmsg.Visible = $ true
$ balmsg.ShowBalloonTip (10000)
Ponadto do tworzenia kolorowych wyskakujących wiadomości w systemie Windows 10 (PowerShell 5.0+) można użyć osobnego modułu PowerShell BurntToast z galerii PowerShell.
Moduł jest instalowany z repozytorium online za pomocą menedżera pakietów Windows 10:Install-Module -Name BurntToast
Teraz, na przykład, we wcześniej rozważanym skrypcie, aby automatycznie rozłączać się z siecią Wi-FI po podłączeniu do sieci Ethernet, możesz dodać kolorowe powiadomienie:
New-BurntToastNotification -Text „Rozłączanie z siecią Wi-Fi”, „Zostałeś odłączony od sieci Wi-Fi, ponieważ Twoje urządzenie było podłączone do szybkiego łącza Ethernet”. -AppLogo C: \ PS \ changenetwork.png
Teraz wiesz, jak wyświetlić powiadomienie użytkownika za pomocą programu PowerShell. Jeśli użytkownik ma głośniki, możesz nawet odtworzyć mu melodię:
[konsola] :: beep (440,500)
[konsola] :: beep (440,500)
[konsola] :: beep (440,500)
[konsola] :: beep (349,350)
[konsola] :: beep (523,150)
[konsola] :: beep (440,500)
[konsola] :: beep (349,350)
[konsola] :: beep (523,150)
[konsola] :: beep (440,1000)
[konsola] :: beep (659,500)
[konsola] :: beep (659,500)
[konsola] :: beep (659,500)
[konsola] :: beep (698,350)
[konsola] :: beep (523,150)
[konsola] :: beep (415,500)
[konsola] :: beep (349,350)
[konsola] :: beep (523,150)
[konsola] :: beep (440,1000)
[konsola] :: beep (880,500)
[konsola] :: beep (440,350)
[konsola] :: beep (440,150)
[konsola] :: beep (880,500)
[konsola] :: beep (830,250)
[konsola] :: beep (784,250)
[konsola] :: beep (740,125)
[konsola] :: beep (698,125)
[konsola] :: beep (740,250)
[konsola] :: beep (455,250)
[konsola] :: beep (622 500)
[konsola] :: beep (587,250)
[konsola] :: beep (554,250)
[konsola] :: beep (523,125)
[konsola] :: beep (466,125)
[konsola] :: beep (523,250)
[konsola] :: beep (349,125)
[konsola] :: beep (415,500)
[konsola] :: beep (349,375)
[konsola] :: beep (440,125)
[konsola] :: beep (523 500)
[konsola] :: beep (440,375)
[konsola] :: beep (523,125)
[konsola] :: beep (659,1000)
[konsola] :: beep (880,500)
[konsola] :: beep (440,350)
[konsola] :: beep (440,150)
[konsola] :: beep (880,500)
[konsola] :: beep (830,250)
[konsola] :: beep (784,250)
[konsola] :: beep (740,125)
[konsola] :: beep (698,125)
[konsola] :: beep (740,250)
[konsola] :: beep (455,250)
[konsola] :: beep (622 500)
[konsola] :: beep (587,250)
[konsola] :: beep (554,250)
[konsola] :: beep (523,125)
[konsola] :: beep (466,125)
[konsola] :: beep (523,250)
[konsola] :: beep (349,250)
[konsola] :: beep (415,500)
[konsola] :: beep (349,375)
[konsola] :: beep (523,125)
[konsola] :: beep (440,500)
[konsola] :: beep (349,375)
[konsola] :: beep (261,125)
[konsola] :: beep (440,1000)