Prikažite obvestila uporabnikom, ki uporabljajo PowerShell

Kljub temu, da je PowerShell konzolni jezik, je včasih treba uporabnika iz skripta PowerShell obvestiti o določenem dogodku ali potrebi po izvedbi določenega dejanja. Na primer, prikažite obvestilo o koncu neke dolgotrajne skripte PoSh ali o pojavu kakšnega pomembnega dogodka.

Najlažji način za prikaz okna s poljubnim preizkusom skozi skriptni podsistem Windows - Wscript.

Naslednja koda bo prikazala navadno besedilno polje s potrebnim besedilom in gumb V redu.

$ wshell = Nov objekt -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("Scenarij generiranja poročil je zaključen")

S pomočjo različnih lastnosti metode Popup lahko prilagodite videz modalnega sporočila. Zlasti v skript lahko vrnete rezultate odgovora uporabnika na vprašanje (da / ne).

$ Output = $ wshell.Popup ("Skript za ustvarjanje poročila je končan! Ali ga želite prikazati na zaslonu?", 0, "Poročilo je pripravljeno", 4 + 32)

Splošna sintaksa in parametri Popup metode:

Popup (,,,)

Parametri:

  • - niz, besedilo sporočila.
  • - poljubno, številka. Število sekund, po katerih se okno samodejno zapre.
  • - poljubno, niz. Besedilo okna sporočila.
  • - poljubno, številka. Kombinacija zastav določa vrsto gumbov in ikone. Možne vrednosti zastave:
    • 0 - gumb OK.
    • 1 - Gumbi OK in Prekliči.
    • 2 - Gumbi Stop, Ponovi, Preskoči.
    • 3 - Da, ne, gumbe za preklic.
    • 4 - Da in Ne.
    • 5 - Gumbi ponovite in prekličite.
    • 16 - ikona ustavitve.
    • 32 - Ikona vprašanja.
    • 48 - Vzklikniška ikona.
    • 64 - Informacijska ikona.

Opis: vrne celo število, s katerim lahko ugotovite, kateri gumb je uporabnik pritisnil. Možne vrednosti:

  • -1 - časovna omejitev.
  • 1 - Gumb OK.
  • 2 - Gumb Prekliči.
  • 3 - Gumb Stop.
  • 4 - Gumb Ponovi.
  • 5 - Gumb Preskoči.
  • 6 - Da.
  • 7 - Brez gumba.

Bolj privlačna in prijetna videz pojavnih sporočil (balonov) se lahko prikažejo v sistemih Windows 7, 8.1 in 10 prek API-ja Windows Forms. Naslednja koda PowerShell prikaže pojavno sporočilo poleg obvestilne plošče Windows 10, ki bo samodejno izginilo po 10 sekundah.

Add-Type -AssemblyName System.Windows.Forms
$ global: balmsg = Nov objektni sistem.Windows.Forms.NotifyIcon
$ path = (Get-Process -id $ pid). Pot
$ balmsg.Icon = [System.Drawing.Icon] :: ExtractAssociatedIcon ($ pot)
$ balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon] :: Opozorilo
$ balmsg.BalloonTipText = 'To je besedilo pojavnega sporočila za uporabnika sistema Windows 10'
$ balmsg.BalloonTipTitle = "Opozorilo $ Env: USERNAME"
$ balmsg.Visible = $ true
$ balmsg.ShowBalloonTip (10000)

Poleg tega za ustvarjanje pisanih pojavnih sporočil v sistemu Windows 10 (PowerShell 5.0 ali novejši) lahko uporabite ločen modul PowerShell BurntToast iz galerije PowerShell.

Modul je nameščen iz spletnega skladišča z upraviteljem paketov Windows 10:
Namestite modul -Name BurntToast

Zdaj lahko na primer v prej obravnavani skript za samodejno prekinitev omrežja Wi-FI, ko ste povezani z Ethernetom, dodate barvno obvestilo:

New-BurntToastNotification -Text "Prekinitev povezave z omrežjem Wi-Fi", "Prekinili ste se z omrežjem Wi-Fi, ker je bila vaša naprava povezana z visokohitrostno povezavo Ethernet." -AppLogo C: \ PS \ changenetwork.png

Zdaj veste, kako prikazovati uporabniško obvestilo prek PowerShell-a. Če ima uporabnik zvočnike, mu lahko celo predvajate melodijo:

[konzola] :: pisk (440.500)
[konzola] :: pisk (440.500)
[konzola] :: pisk (440.500)
[konzola] :: pisk (349.350)
[konzola] :: pisk (523.150)
[konzola] :: pisk (440.500)
[konzola] :: pisk (349.350)
[konzola] :: pisk (523.150)
[konzola] :: pisk (440,1000)
[konzola] :: pisk (659.500)
[konzola] :: pisk (659.500)
[konzola] :: pisk (659.500)
[konzola] :: pisk (698.350)
[konzola] :: pisk (523.150)
[konzola] :: pisk (415.500)
[konzola] :: pisk (349.350)
[konzola] :: pisk (523.150)
[konzola] :: pisk (440,1000)
[konzola] :: pisk (880.500)
[konzola] :: pisk (440.350)
[konzola] :: pisk (440.150)
[konzola] :: pisk (880.500)
[konzola] :: pisk (830.250)
[konzola] :: pisk (784.250)
[konzola] :: pisk (740,125)
[konzola] :: pisk (698,125)
[konzola] :: pisk (740.250)
[konzola] :: pisk (455.250)
[konzola] :: pisk (622.500)
[konzola] :: pisk (587.250)
[konzola] :: pisk (554.250)
[konzola] :: pisk (523,125)
[konzola] :: pisk (466,125)
[konzola] :: pisk (523.250)
[konzola] :: pisk (349,125)
[konzola] :: pisk (415.500)
[konzola] :: pisk (349.375)
[konzola] :: pisk (440,125)
[konzola] :: pisk (523.500)
[konzola] :: pisk (440.375)
[konzola] :: pisk (523,125)
[konzola] :: pisk (659,1000)
[konzola] :: pisk (880.500)
[konzola] :: pisk (440.350)
[konzola] :: pisk (440.150)
[konzola] :: pisk (880.500)
[konzola] :: pisk (830.250)
[konzola] :: pisk (784.250)
[konzola] :: pisk (740,125)
[konzola] :: pisk (698,125)
[konzola] :: pisk (740.250)
[konzola] :: pisk (455.250)
[konzola] :: pisk (622.500)
[konzola] :: pisk (587.250)
[konzola] :: pisk (554.250)
[konzola] :: pisk (523,125)
[konzola] :: pisk (466,125)
[konzola] :: pisk (523.250)
[konzola] :: pisk (349.250)
[konzola] :: pisk (415.500)
[konzola] :: pisk (349.375)
[konzola] :: pisk (523,125)
[konzola] :: pisk (440.500)
[konzola] :: pisk (349.375)
[konzola] :: pisk (261,125)
[konzola] :: pisk (440,1000)