Zobrazovať upozornenia používateľom pomocou PowerShell

Napriek tomu, že PowerShell je jazyk konzoly, niekedy je potrebné informovať používateľa zo skriptu PowerShell o konkrétnej udalosti alebo o potrebe vykonať konkrétnu akciu. Napríklad, zobrazí sa upozornenie na koniec nejakého dlhodobého skriptu PoSh alebo na výskyt nejakej dôležitej udalosti.

Najjednoduchší spôsob, ako zobraziť okno s ľubovoľným testom prostredníctvom skriptovacieho subsystému Windows - Wscript.

Nasledujúci kód zobrazí obyčajné textové pole s potrebným textom a tlačidlom OK.

$ wshell = New-Object -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("Skript na generovanie prehľadov bol dokončený")

Pomocou rôznych vlastností metódy Popup môžete prispôsobiť vzhľad modálneho okna správ. Vrátane, môžete sa vrátiť do skriptu výsledky odpovede používateľa na otázku (Áno / Nie).

$ Output = $ wshell.Popup („Skript na generovanie správy je kompletný! Chcete ho zobraziť na obrazovke?“, 0, „Správa je pripravená“, 4 + 32)

Všeobecná syntax a parametre metódy Popup:

Kontextové okno (,,,)

voľby:

  • - reťazec, text správy.
  • - voliteľné, číslo. Počet sekúnd, po ktorých sa okno automaticky zatvorí.
  • - voliteľné, reťazec. Text názvu okna správy.
  • - voliteľné, číslo. Kombinácia príznakov určuje typ tlačidiel a ikony. Možné hodnoty vlajky:
    • 0 - tlačidlo OK.
    • 1 - Tlačidlá OK a Cancel.
    • 2 - Tlačidlá Stop, Repeat, Skip.
    • 3 - Tlačidlá Áno, Nie, Zrušiť.
    • 4 - Tlačidlá Áno a Nie.
    • 5 - Tlačidlá opakovania a zrušenia.
    • 16 - Ikona Stop.
    • 32 - Ikona otázky.
    • 48 - Výkričník.
    • 64 - Informačná ikona.

Popis: vráti celočíselnú hodnotu, pomocou ktorej môžete zistiť, ktoré tlačidlo stlačil užívateľ. Možné hodnoty:

  • -1 - časový limit.
  • 1 - tlačidlo OK.
  • 2 - Tlačidlo Zrušiť.
  • 3 - Tlačidlo Stop.
  • 4 - Tlačidlo opakovania.
  • 5 - Tlačidlo Preskočiť.
  • 6 - Tlačidlo Áno.
  • 7 - Žiadne tlačidlo.

Príťažlivejšie a príjemnejšie vyzerajúce kontextové správy (balóny) sa môžu zobrazovať v systémoch Windows 7, 8.1 a 10 prostredníctvom rozhrania Windows Forms API. Nasledujúci kód PowerShell zobrazí rozbaľovaciu správu vedľa oznamovacieho panela Windows 10, ktorý automaticky zmizne 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 ($ cesta)
$ balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon] :: Warning
$ balmsg.BalloonTipText = 'Toto je text rozbaľovacej správy pre užívateľa Windows 10'
$ balmsg.BalloonTipTitle = "Warning $ Env: USERNAME"
$ balmsg.Visible = $ true
$ balmsg.ShowBalloonTip (10 000)

Okrem toho na vytvorenie farebných kontextových správ v systéme Windows 10 (PowerShell 5.0+) môžete použiť samostatný modul PowerShell BurntToast z galérie PowerShell..

Modul sa inštaluje z online úložiska pomocou správcu balíkov Windows 10:
Install-Module -Name BurntToast

Napríklad, v predtým zvažovanom skripte, ktorý sa automaticky odpojí od siete Wi-FI po pripojení k sieti Ethernet, môžete pridať farebné upozornenie:

New-BurntToastNotification -Text „Odpojenie od siete Wi-Fi“, „Odpojili ste sa od siete Wi-Fi, pretože vaše zariadenie bolo pripojené k vysokorýchlostnému ethernetovému pripojeniu.“ -AppLogo C: \ PS \ changenetwork.png

Takže teraz viete, ako zobraziť upozornenie používateľa prostredníctvom PowerShell. Ak má používateľ reproduktory, môžete ho dokonca zahrať:

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