Prikažite obavijesti korisnicima koji koriste PowerShell

Unatoč činjenici da je PowerShell jezik konzole, ponekad je potrebno obavijestiti korisnika iz skripte PowerShell o određenom događaju ili potrebi da se izvrši određena radnja. Na primjer, prikažite obavijest o kraju neke dugoročne PoSh skripte ili o pojavi nekog važnog događaja.

Najlakši način za prikaz prozora s proizvoljnim testom kroz Windows skriptni podsustav - Wscript.

Sljedeći kôd prikazat će običan tekstni okvir s potrebnim tekstom i gumb U redu.

$ wshell = Novi objekt -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("Skripta generiranja izvještaja dovršena")

Koristeći različita svojstva Popup metode možete prilagoditi izgled modalnog okvira s porukama. Konkretno, u skriptu možete vratiti rezultate korisnikovog odgovora na pitanje (Da / Ne).

$ Output = $ wshell.Popup ("Skripta za generiranje izvješća je gotova! Želite li je prikazati na zaslonu?", 0, "Izvještaj je spreman", 4 + 32)

Opća sintaksa i parametri Popup metode:

Popup (,,,)

Mogućnosti:

  • - niz, tekst poruke.
  • - izborno, broj. Broj sekundi nakon kojih se prozor automatski zatvara.
  • - izborno, string. Tekst naslova prozora poruke.
  • - izborno, broj. Kombinacija zastava određuje vrstu gumba i ikone. Moguće vrijednosti zastave:
    • 0 - gumb OK.
    • 1 - Gumbi U redu i Odustani.
    • 2 - Gumbi Zaustavi, Ponovi, Preskoči.
    • 3 - Da, ne, gumbe za odustajanje.
    • 4 - Da i ne gumbi.
    • 5 - Gumbi ponovite i poništite.
    • 16 - Ikona za zaustavljanje.
    • 32 - Ikona pitanja.
    • 48 - ikona uskličnika.
    • 64 - Ikona informacija.

Opis: vraća cjelobrojnu vrijednost s kojom možete saznati koji je gumb pritisnuo korisnik. Moguće vrijednosti:

  • -1 - prekid.
  • 1 - Gumb OK.
  • 2 - Gumb za odustajanje.
  • 3 - gumb za zaustavljanje.
  • 4 - Gumb za ponavljanje.
  • 5 - Tipka za preskakanje.
  • 6 - Da.
  • 7 - Nema gumba.

Privlačnije i ugodnije izgledajuće skočne poruke (baloni) mogu se prikazivati ​​u Windowsima 7, 8.1 i 10 putem Windows Forms API-ja. Sljedeći PowerShell kôd prikazat će skočnu poruku pored panela s obavijestima sustava Windows 10, koja će automatski nestati nakon 10 sekundi.

Add-Type -AssemblyName System.Windows.Forms
$ global: balmsg = Novi objektni sustav.Windows.Forms.NotifyIcon
$ path = (Get-Process -id $ pid). Put
$ balmsg.Icon = [System.Drawing.Icon] :: ExtractAssociatedIcon ($ path)
$ balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon] :: Upozorenje
$ balmsg.BalloonTipText = 'Ovo je tekst skočne poruke za korisnika Windows 10'
$ balmsg.BalloonTipTitle = "Upozorenje $ Env: USERNAME"
$ balmsg.Visible = $ true
$ balmsg.ShowBalloonTip (10000)

Uz to, za stvaranje živopisnih skočnih poruka u sustavu Windows 10 (PowerShell 5.0+) možete koristiti zasebni PowerShell modul BurntToast iz PowerShell galerije.

Modul se instalira iz mrežnog spremišta pomoću upravitelja paketa Windows 10:
Install-Module -Name BurntToast

Na primjer, u prethodno razmatranu skriptu za automatsko prekidanje Wi-Fi mreže kad ste povezani s Ethernetom, možete dodati šarenu obavijest:

New-BurntToastNotification -Text "Prekid veze s Wi-Fi mrežom", "Prekinuli ste s Wi-Fi mrežom, jer je vaš uređaj spojen na brzu Ethernet vezu". -AppLogo C: \ PS \ changenetwork.png

Dakle, sada znate kako prikazati korisničku obavijest putem PowerShell-a. Ako korisnik ima zvučnike, možete mu čak i reproducirati melodiju:

[konzola] :: zvučni signal (440,500)
[konzola] :: zvučni signal (440,500)
[konzola] :: zvučni signal (440,500)
[konzola] :: zvučni signal (349.350)
[konzola] :: zvučni signal (523.150)
[konzola] :: zvučni signal (440,500)
[konzola] :: zvučni signal (349.350)
[konzola] :: zvučni signal (523.150)
[konzola] :: zvučni signal (440,1000)
[konzola] :: zvučni signal (659.500)
[konzola] :: zvučni signal (659.500)
[konzola] :: zvučni signal (659.500)
[konzola] :: zvučni signal (698.350)
[konzola] :: zvučni signal (523.150)
[konzola] :: zvučni signal (415.500)
[konzola] :: zvučni signal (349.350)
[konzola] :: zvučni signal (523.150)
[konzola] :: zvučni signal (440,1000)
[konzola] :: zvučni signal (880.500)
[konzola] :: zvučni signal (440.350)
[konzola] :: zvučni signal (440.150)
[konzola] :: zvučni signal (880.500)
[konzola] :: zvučni signal (830.250)
[konzola] :: zvučni signal (784.250)
[konzola] :: zvučni signal (740,125)
[konzola] :: zvučni signal (698,125)
[konzola] :: zvučni signal (740.250)
[konzola] :: zvučni signal (455.250)
[konzola] :: zvučni signal (622.500)
[konzola] :: zvučni signal (587.250)
[konzola] :: zvučni signal (554.250)
[konzola] :: zvučni signal (523,125)
[konzola] :: zvučni signal (466,125)
[konzola] :: zvučni signal (523.250)
[konzola] :: zvučni signal (349.125)
[konzola] :: zvučni signal (415.500)
[konzola] :: zvučni signal (349.375)
[konzola] :: zvučni signal (440,125)
[konzola] :: zvučni signal (523.500)
[konzola] :: zvučni signal (440.375)
[konzola] :: zvučni signal (523,125)
[konzola] :: zvučni signal (659.1000)
[konzola] :: zvučni signal (880.500)
[konzola] :: zvučni signal (440.350)
[konzola] :: zvučni signal (440.150)
[konzola] :: zvučni signal (880.500)
[konzola] :: zvučni signal (830.250)
[konzola] :: zvučni signal (784.250)
[konzola] :: zvučni signal (740,125)
[konzola] :: zvučni signal (698,125)
[konzola] :: zvučni signal (740.250)
[konzola] :: zvučni signal (455.250)
[konzola] :: zvučni signal (622.500)
[konzola] :: zvučni signal (587.250)
[konzola] :: zvučni signal (554.250)
[konzola] :: zvučni signal (523,125)
[konzola] :: zvučni signal (466,125)
[konzola] :: zvučni signal (523.250)
[konzola] :: zvučni signal (349.250)
[konzola] :: zvučni signal (415.500)
[konzola] :: zvučni signal (349.375)
[konzola] :: zvučni signal (523,125)
[konzola] :: zvučni signal (440,500)
[konzola] :: zvučni signal (349.375)
[konzola] :: zvučni signal (261.125)
[konzola] :: zvučni signal (440,1000)