Въпреки факта, че PowerShell е конзолен език, понякога е необходимо да се уведомява потребител от PowerShell скрипт за конкретно събитие или необходимостта от извършване на конкретно действие. Например, покажете известие за края на някакъв дългосрочен PoSh скрипт или за настъпването на някакво важно събитие.
Най-лесният начин за показване на прозорец с произволен тест чрез скриптовата подсистема на Windows - Wscript.
Следващият код ще покаже обикновено текстово поле с необходимия текст и бутон OK.
$ wshell = New-Object -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("Скрипт за генериране на отчет завършен")
Използвайки различните свойства на Popup метода, можете да персонализирате вида на полето за модално съобщение. По-специално можете да върнете към скрипта резултатите от отговора на потребителя на въпроса (Да / Не).
$ Output = $ wshell.Popup ("Скриптът за генериране на отчета е завършен! Искате ли да го покажете на екрана?", 0, "Докладът е готов", 4 + 32)
Общ синтаксис и параметри на Popup метода:
Изскачащи (,,,)
Опции:
- - низ, текст на съобщението.
- - по избор, номер. Броят секунди, след които прозорецът автоматично ще се затвори.
- - по избор, низ. Текст на заглавието на прозореца на съобщението.
- - по избор, номер. Комбинацията от знамена определя вида на бутоните и иконата. Възможни стойности на флага:
- 0 - бутон ОК.
- 1 - бутони ОК и Отказ.
- 2 - Бутони за спиране, повторение, прескачане.
- 3 - Да, не, бутони за отказ.
- 4 - Бутони Да и Не.
- 5 - Бутони за повторение и отмяна.
- 16 - Икона на стоп.
- 32 - Икона на въпроса.
- 48 - Възклицателна икона.
- 64 - Икона за информация.
Описание: връща цяло число, с което можете да разберете кой бутон е натиснат от потребителя. Възможни стойности:
- -1 - изчакване.
- 1 - бутон ОК.
- 2 - Бутон за отказ.
- 3 - Бутон за спиране.
- 4 - Бутон за повторение.
- 5 - Бутон за пропускане.
- 6 - бутон Да.
- 7 - Без бутон.
По-привлекателните и приятно изглеждащи изскачащи съобщения (балони) могат да се показват в Windows 7, 8.1 и 10 чрез API на Windows Forms. Следващият код на PowerShell ще покаже изскачащо съобщение до панела за известия на Windows 10, което автоматично ще изчезне след 10 секунди.
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] :: Предупреждение
$ balmsg.BalloonTipText = 'Това е текстът на изскачащо съобщение за потребител на Windows 10'
$ balmsg.BalloonTipTitle = "Предупреждение $ Env: USERNAME"
$ balmsg.Visible = $ true
$ balmsg.ShowBalloonTip (10000)
В допълнение, за да създадете цветни изскачащи съобщения в Windows 10 (PowerShell 5.0+), можете да използвате отделния PowerShell модул BurntToast от галерията на PowerShell.
Модулът е инсталиран от онлайн хранилището с помощта на мениджъра на пакети за Windows 10:Install-Module -Name BurntToast
Сега например в разгледания по-рано скрипт за автоматично прекъсване от Wi-FI мрежа, когато сте свързани към Ethernet, можете да добавите цветно известие:
New-BurntToastNotification -Text „Прекъсване на връзката с Wi-Fi мрежа“, „Вие бяхте прекъснати от Wi-Fi мрежа, защото вашето устройство е свързано към високоскоростна Ethernet връзка.“ -AppLogo C: \ PS \ changenetwork.png
Така че сега знаете как да показвате потребителско известие чрез PowerShell. Ако потребителят има високоговорители, можете дори да му пуснете мелодия:
[конзола] :: звуков сигнал (440 500)
[конзола] :: звуков сигнал (440 500)
[конзола] :: звуков сигнал (440 500)
[конзола] :: звуков сигнал (349 350)
[конзола] :: звуков сигнал (523,150)
[конзола] :: звуков сигнал (440 500)
[конзола] :: звуков сигнал (349 350)
[конзола] :: звуков сигнал (523,150)
[конзола] :: звуков сигнал (440,1000)
[конзола] :: звуков сигнал (659 500)
[конзола] :: звуков сигнал (659 500)
[конзола] :: звуков сигнал (659 500)
[конзола] :: звуков сигнал (698 350)
[конзола] :: звуков сигнал (523,150)
[конзола] :: звуков сигнал (415 500)
[конзола] :: звуков сигнал (349 350)
[конзола] :: звуков сигнал (523,150)
[конзола] :: звуков сигнал (440,1000)
[конзола] :: звуков сигнал (880 500)
[конзола] :: звуков сигнал (440 350)
[конзола] :: звуков сигнал (440 150)
[конзола] :: звуков сигнал (880 500)
[конзола] :: звуков сигнал (830 250)
[конзола] :: звуков сигнал (784 250)
[конзола] :: звуков сигнал (740,125)
[конзола] :: звуков сигнал (698,125)
[конзола] :: звуков сигнал (740 250)
[конзола] :: звуков сигнал (455 250)
[конзола] :: звуков сигнал (622 500)
[конзола] :: звуков сигнал (587 250)
[конзола] :: звуков сигнал (554 250)
[конзола] :: звуков сигнал (523,125)
[конзола] :: звуков сигнал (466,125)
[конзола] :: звуков сигнал (523 250)
[конзола] :: звуков сигнал (349,125)
[конзола] :: звуков сигнал (415 500)
[конзола] :: звуков сигнал (349,375)
[конзола] :: звуков сигнал (440,125)
[конзола] :: звуков сигнал (523 500)
[конзола] :: звуков сигнал (440,375)
[конзола] :: звуков сигнал (523,125)
[конзола] :: звуков сигнал (659,1000)
[конзола] :: звуков сигнал (880 500)
[конзола] :: звуков сигнал (440 350)
[конзола] :: звуков сигнал (440 150)
[конзола] :: звуков сигнал (880 500)
[конзола] :: звуков сигнал (830 250)
[конзола] :: звуков сигнал (784 250)
[конзола] :: звуков сигнал (740,125)
[конзола] :: звуков сигнал (698,125)
[конзола] :: звуков сигнал (740 250)
[конзола] :: звуков сигнал (455 250)
[конзола] :: звуков сигнал (622 500)
[конзола] :: звуков сигнал (587 250)
[конзола] :: звуков сигнал (554 250)
[конзола] :: звуков сигнал (523,125)
[конзола] :: звуков сигнал (466,125)
[конзола] :: звуков сигнал (523 250)
[конзола] :: звуков сигнал (349 250)
[конзола] :: звуков сигнал (415 500)
[конзола] :: звуков сигнал (349,375)
[конзола] :: звуков сигнал (523,125)
[конзола] :: звуков сигнал (440 500)
[конзола] :: звуков сигнал (349,375)
[конзола] :: звуков сигнал (261,125)
[конзола] :: звуков сигнал (440,1000)