Értesítések megjelenítése a felhasználók számára a PowerShell használatával

Annak ellenére, hogy a PowerShell egy konzolnyelv, néha szükség van egy felhasználónak a PowerShell-parancsfájlból történő értesítésére egy adott eseményről vagy egy adott művelet végrehajtásának szükségességéről. Például jelenítsen meg egy értesítést egy hosszú ideje futó PoSh szkript befejezéséről vagy néhány fontos eseményről.

Egy ablak tetszőleges teszttel történő megjelenítésének legegyszerűbb módja a Windows parancsfájlok alrendszeren keresztül - Wscript.

A következő kód egy egyszerű szövegdobozt jelenít meg a szükséges szöveggel és az OK gombval.

$ wshell = New-Object -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("Jelentésgenerációs szkript kész")

A felbukkanó módszer különféle tulajdonságainak felhasználásával testreszabhatja a modális üzenet mező megjelenését. Különösen visszaadhatja a szkriptnek a felhasználó kérdésre adott válaszának eredményeit (Igen / Nem).

$ Output = $ wshell.Popup ("A jelentés elkészítéséhez szükséges szkript teljes! Szeretné megjeleníteni a képernyőn?", 0, "A jelentés kész", 4 + 32)

A felbukkanó módszer általános szintaxisa és paraméterei:

Felbukkanó (,,,)

lehetőségek:

  • - karakterlánc, üzenet szövege.
  • - választható, szám. Az másodpercek száma, amely után az ablak automatikusan bezáródik.
  • - választható, húr. Az üzenet ablakának címe.
  • - választható, szám. A zászlók kombinációja határozza meg a gombok és az ikon típusát. Lehetséges zászlóértékek:
    • 0 - OK gomb.
    • 1 - OK és Mégse gombok.
    • 2 - Stop, Ismétlés, Ugrás gombok.
    • 3 - Igen, Nem, Mégse gombok.
    • 4 - Igen és Nem gombok.
    • 5 - Ismétlés és Mégse gombok.
    • 16 - Stop ikon.
    • 32 - Kérdés ikon.
    • 48 - Felkiáltójel ikon.
    • 64 - Információs ikon.

Leírás: egész számot ad vissza, amellyel megtudhatja, melyik gombot nyomja meg a felhasználó. Lehetséges értékek:

  • -1 - időtúllépés.
  • 1 - OK gomb.
  • 2 - Mégse gomb.
  • 3 - Stop gomb.
  • 4 - Ismételje meg a gombot.
  • 5 - Ugrás gomb.
  • 6 - Igen gomb.
  • 7 - Nincs gomb.

A vonzóbb és kellemesebb megjelenésű felugró üzenetek (ballonok) a Windows 7, 8.1 és 10 rendszeren jeleníthetők meg a Windows Forms API-n keresztül. A következő PowerShell-kód egy pop-up üzenetet jelenít meg a Windows 10 értesítő panel mellett, amely 10 másodperc után automatikusan eltűnik..

Add-Type -AssemblyName System.Windows.Forms
$ global: balmsg = New-Object System.Windows.Forms.NotifyIcon
$ path = (Get-Process -id $ pid) .Path
$ balmsg.Icon = [System.Drawing.Icon] :: ExtractAssociatedIcon ($ elérési út)
$ balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon] :: Figyelem
$ balmsg.BalloonTipText = 'Ez egy felbukkanó üzenet szövege egy Windows 10 felhasználó számára'
$ balmsg.BalloonTipTitle = "Figyelem $ Env: USERNAME"
$ balmsg.Visible = $ igaz
$ balmsg.ShowBalloonTip (10000)

Ezen felül színes pop-up üzenetek létrehozásához a Windows 10 rendszerben (PowerShell 5.0+) használhatja a PowerShell különálló BurntToast modult a PowerShell galériából.

A modult az online lerakatból telepítik a Windows 10 csomagkezelő használatával:
Telepítési modul - Név BurntToast

Most például egy korábban megfontolt szkriptben, amely automatikusan leválasztja a Wi-Fi hálózatot, amikor az Ethernethez csatlakozik, színes értesítést adhat hozzá:

New-BurntToastNotification - Szöveg "Lekapcsolódás a Wi-Fi hálózatról", "Megszakadt a Wi-Fi hálózatról, mert az eszköz nagy sebességű Ethernet kapcsolathoz volt csatlakoztatva." -AppLogo C: \ PS \ changenetwork.png

Tehát most már tudja, hogyan jelenítheti meg a felhasználói értesítést a PowerShell segítségével. Ha a felhasználónak vannak hangszórói, akkor akár egy dallamot is lejátszhat neki:

[konzol] :: sípolás (440,500)
[konzol] :: sípolás (440,500)
[konzol] :: sípolás (440,500)
[konzol] :: sípolás (349,350)
[konzol] :: sípolás (523 150)
[konzol] :: sípolás (440,500)
[konzol] :: sípolás (349,350)
[konzol] :: sípolás (523 150)
[konzol] :: sípolás (440,1000)
[konzol] :: sípolás (659,500)
[konzol] :: sípolás (659,500)
[konzol] :: sípolás (659,500)
[konzol] :: sípolás (698,350)
[konzol] :: sípolás (523 150)
[konzol] :: sípolás (415,500)
[konzol] :: sípolás (349,350)
[konzol] :: sípolás (523 150)
[konzol] :: sípolás (440,1000)
[konzol] :: sípolás (880,500)
[konzol] :: sípolás (440,350)
[konzol] :: sípolás (440,150)
[konzol] :: sípolás (880,500)
[konzol] :: sípolás (830,250)
[konzol] :: sípolás (784 250)
[konzol] :: sípolás (740,125)
[konzol] :: sípolás (698,125)
[konzol] :: sípolás (740,250)
[konzol] :: sípolás (455,250)
[konzol] :: sípolás (622 500)
[konzol] :: sípolás (587,250)
[konzol] :: sípolás (554 250)
[konzol] :: sípolás (523,125)
[konzol] :: sípolás (466,125)
[konzol] :: sípolás (523 250)
[konzol] :: sípolás (349,125)
[konzol] :: sípolás (415,500)
[konzol] :: sípolás (349 375)
[konzol] :: sípolás (440,125)
[konzol] :: sípolás (523 500)
[konzol] :: sípolás (440,375)
[konzol] :: sípolás (523,125)
[konzol] :: sípolás (659,1000)
[konzol] :: sípolás (880,500)
[konzol] :: sípolás (440,350)
[konzol] :: sípolás (440,150)
[konzol] :: sípolás (880,500)
[konzol] :: sípolás (830,250)
[konzol] :: sípolás (784 250)
[konzol] :: sípolás (740,125)
[konzol] :: sípolás (698,125)
[konzol] :: sípolás (740,250)
[konzol] :: sípolás (455,250)
[konzol] :: sípolás (622 500)
[konzol] :: sípolás (587,250)
[konzol] :: sípolás (554 250)
[konzol] :: sípolás (523,125)
[konzol] :: sípolás (466,125)
[konzol] :: sípolás (523 250)
[konzol] :: sípolás (349 250)
[konzol] :: sípolás (415,500)
[konzol] :: sípolás (349 375)
[konzol] :: sípolás (523,125)
[konzol] :: sípolás (440,500)
[konzol] :: sípolás (349 375)
[konzol] :: sípolás (261,125)
[konzol] :: sípolás (440,1000)