Zobrazovat oznámení uživatelům pomocí prostředí PowerShell

Navzdory skutečnosti, že PowerShell je jazyk konzoly, je někdy nutné upozornit uživatele ze skriptu PowerShell na konkrétní událost nebo potřebu provést konkrétní akci. Například zobrazte upozornění na konec nějakého dlouhodobého PoSh skriptu nebo na výskyt nějaké důležité události.

Nejjednodušší způsob, jak zobrazit okno s libovolným testem prostřednictvím skriptovacího subsystému Windows - Wscript.

Následující kód zobrazí prosté textové pole s potřebným textem a tlačítkem OK.

$ wshell = New-Object -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("Skript pro generování sestav dokončen")

Pomocí různých vlastností metody vyskakování můžete přizpůsobit vzhled modální zprávy. Zejména se můžete do skriptu vrátit výsledky odpovědi uživatele na otázku (Ano / Ne).

$ Output = $ wshell.Popup ("Skript pro generování sestavy je kompletní! Chcete ho zobrazit na obrazovce?", 0, "Sestava je připravena", 4 + 32)

Obecná syntaxe a parametry metody Popup:

Popup (,,,)

Parametry:

  • - řetězec, text zprávy.
  • - volitelné, číslo. Počet sekund, po kterých se okno automaticky zavře.
  • - volitelné, řetězec. Text nadpisu okna zprávy.
  • - volitelné, číslo. Kombinace příznaků určuje typ tlačítek a ikon. Možné hodnoty příznaků:
    • 0 - tlačítko OK.
    • 1 - tlačítka OK a Storno.
    • 2 - Tlačítka Stop, Repeat, Skip.
    • 3 - Tlačítka Ano, Ne, Storno.
    • 4 - Tlačítka Ano a Ne.
    • 5 - Tlačítka opakování a zrušení.
    • 16 - Ikona Stop.
    • 32 - Ikona otázky.
    • 48 - vykřičník.
    • 64 - Informační ikona.

Popis: vrací celočíselnou hodnotu, pomocí které můžete zjistit, které tlačítko uživatel stiskl. Možné hodnoty:

  • -1 - časový limit.
  • 1 - tlačítko OK.
  • 2 - Tlačítko Storno.
  • 3 - Tlačítko Stop.
  • 4 - Tlačítko opakování.
  • 5 - Tlačítko Přeskočit.
  • 6 - Tlačítko Ano.
  • 7 - Žádné tlačítko.

Atraktivnější a příjemnější vypadající vyskakovací zprávy (baňky) lze zobrazit ve Windows 7, 8.1 a 10 prostřednictvím rozhraní Windows Forms API. Následující kód PowerShell zobrazí vyskakovací zprávu vedle oznamovacího panelu Windows 10, která automaticky zmizí po 10 sekundách.

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 ($ path)
$ balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon] :: Upozornění
$ balmsg.BalloonTipText = 'Toto je text rozbalovací zprávy pro uživatele Windows 10'
$ balmsg.BalloonTipTitle = "Warning $ Env: USERNAME"
$ balmsg.Visible = $ true
$ balmsg.ShowBalloonTip (10000)

Kromě toho můžete pro vytváření barevných vyskakovacích zpráv v systému Windows 10 (PowerShell 5.0+) použít samostatný modul PowerShell BurntToast z galerie PowerShell.

Modul je nainstalován z online úložiště pomocí správce balíčků Windows 10:
Install-Module -Name BurntToast

Nyní například v dříve uvažovaném skriptu, který se po připojení k síti Ethernet automaticky odpojí od sítě Wi-FI, můžete přidat barevné oznámení:

New-BurntToastNotification --Text „Odpojení od sítě Wi-Fi“, „Byl jste odpojen od sítě Wi-Fi, protože vaše zařízení bylo připojeno k vysokorychlostnímu připojení Ethernet.“ -AppLogo C: \ PS \ changenetwork.png

Nyní tedy víte, jak zobrazit upozornění uživatele pomocí PowerShell. Pokud má uživatel reproduktory, můžete ho dokonce zahrát na melodii:

[konzole] :: pípnutí (440 500)
[konzole] :: pípnutí (440 500)
[konzole] :: pípnutí (440 500)
[konzole] :: pípnutí (349 350)
[konzole] :: pípnutí (523 150)
[konzole] :: pípnutí (440 500)
[konzole] :: pípnutí (349 350)
[konzole] :: pípnutí (523 150)
[konzole] :: pípnutí (440,1000)
[konzole] :: pípnutí (659 500)
[konzole] :: pípnutí (659 500)
[konzole] :: pípnutí (659 500)
[konzole] :: pípnutí (698 350)
[konzole] :: pípnutí (523 150)
[konzole] :: pípnutí (415 500)
[konzole] :: pípnutí (349 350)
[konzole] :: pípnutí (523 150)
[konzole] :: pípnutí (440,1000)
[konzole] :: pípnutí (880 500)
[konzole] :: pípnutí (440 350)
[konzole] :: pípnutí (440 150)
[konzole] :: pípnutí (880 500)
[konzole] :: pípnutí (830 250)
[konzole] :: pípnutí (784 250)
[konzole] :: pípnutí (740 125)
[konzole] :: pípnutí (698 125)
[konzole] :: pípnutí (740 250)
[konzole] :: pípnutí (455 250)
[konzole] :: pípnutí (622 500)
[konzole] :: pípnutí (587 250)
[konzole] :: pípnutí (554 250)
[konzole] :: pípnutí (523 125)
[konzole] :: pípnutí (466 125)
[konzole] :: pípnutí (523 250)
[konzole] :: pípnutí (349 125)
[konzole] :: pípnutí (415 500)
[konzole] :: pípnutí (349 375)
[konzole] :: pípnutí (440,125)
[konzole] :: pípnutí (523 500)
[konzole] :: pípnutí (440 375)
[konzole] :: pípnutí (523 125)
[konzole] :: pípnutí (659 000)
[konzole] :: pípnutí (880 500)
[konzole] :: pípnutí (440 350)
[konzole] :: pípnutí (440 150)
[konzole] :: pípnutí (880 500)
[konzole] :: pípnutí (830 250)
[konzole] :: pípnutí (784 250)
[konzole] :: pípnutí (740 125)
[konzole] :: pípnutí (698 125)
[konzole] :: pípnutí (740 250)
[konzole] :: pípnutí (455 250)
[konzole] :: pípnutí (622 500)
[konzole] :: pípnutí (587 250)
[konzole] :: pípnutí (554 250)
[konzole] :: pípnutí (523 125)
[konzole] :: pípnutí (466 125)
[konzole] :: pípnutí (523 250)
[konzole] :: pípnutí (349 250)
[konzole] :: pípnutí (415 500)
[konzole] :: pípnutí (349 375)
[konzole] :: pípnutí (523 125)
[konzole] :: pípnutí (440 500)
[konzole] :: pípnutí (349 375)
[konzole] :: pípnutí (261 125)
[konzole] :: pípnutí (440,1000)