Использование выходных уведомлений PowerShell для пометки элементов

Те из вас, кто знаком с моей работой, знают, что я пишу много кода PowerShell. Со временем я обнаружил, что сценарии, которые я пишу, неизбежно становятся длиннее и сложнее, а вывод на экран иногда может быть загроможденным и несколько подавляющим. Таким образом, может быть полезно привлечь внимание к ключевым фрагментам информации в выводе скрипта PowerShell. На сегодняшний день наиболее распространенным выходным уведомлением PowerShell является сообщение электронной почты. Однако, если вы запускаете сценарий и просто хотите привлечь внимание к чему-то важному на экране, создание сообщения электронной почты, вероятно, не будет лучшим способом добиться этого. Я часто использовал три разных метода использования элементов выходных уведомлений PowerShell в своих сценариях для пометки элементов.
Звук
Иногда все, что вам нужно, это простой звуковой сигнал, чтобы привлечь ваше внимание. Вставить звук в сценарий PowerShell очень просто. Вот команда, которую вы можете встроить в стратегическое место вашего скрипта:
[console]::beep(1000,500)
Если вам интересно, первое из двух чисел (в данном случае 1000) управляет высотой тона, а второе число (500) — длительностью. Вы можете изменить эти цифры в большую или меньшую сторону по своему вкусу.
Цвет
Еще один способ привлечь внимание к определенному элементу в выводе вашего скрипта — использовать цвет. Присвоить цвет строке текста так же просто, как добавить параметр -ForegroundColor в командлет Write-Host, а затем указать цвет. Допустимые цвета включают:
- Черный
- Синий
- Голубой
- Темно-синий
- Темно-голубой
- Темно-серый
- Темно-зеленый
- Темно-пурпурный
- Темно-красный
- Темно-желтый
- Серый
- Зеленый
- Пурпурный
- Красный
- Белый
- Желтый
Хотя вы часто можете добавить цвет непосредственно к существующим командам вашего скрипта, я лично предпочитаю использовать функцию, потому что функция дает вам немного больше гибкости. Вот пример:
Функция Display-Notification($NotificationText)
{
Write-Host $NotificationText -ForegroundColor Зеленый
}
Write-Host 'Что-то неважное'
$NotificationText = 'Это уведомление'
Отображение-уведомление $NotificationText
Пишите-ведущий «Что-то неважное»
Этот блок кода действительно прост. Скрипт выводит на экран что-то неважное. Затем он добавляет к переменной фразу «Это уведомление», а затем передает эту переменную функции Display-Notification. Эта функция отображает содержимое переменных зеленым цветом. Когда функция завершается, скрипт записывает что-то еще неважное, но делает это цветом текста по умолчанию (белым).
Вот как выглядит вывод скрипта:
Всплывающее окно
Еще один способ, которым я иногда уведомляю себя о важных элементах сценария, — это создание всплывающего диалогового окна. Есть бесчисленное множество способов сделать это, но метод, который я люблю использовать, включает в себя графическое всплывающее окно с кнопкой OK. Причина, по которой мне нравится этот метод, заключается в том, что он фактически приостанавливает выполнение сценария до тех пор, пока вы не нажмете «ОК», чтобы подтвердить уведомление. Я думаю, что использование звука или цвета определенно имеет место, но вы можете пропустить звук, если ваши динамики выключены, и строка цветного текста может прокрутиться за пределы экрана, прежде чем вы ее увидите. Однако всплывающее окно действительно сложно не заметить. Вот код:
Функция Display-Notification($NotificationText)
{
#Загрузить сборки
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null
$net = New-Object -ComObject Wscript.Network
# ——Нарисуйте пустую форму—-
$Form = Новый объект System.Windows.Forms.Form
$Форма.ширина = 400
$Форма.высота = 200
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::Fixed3D
$Form.Text = «Уведомление»
$Form.maximumsize = Новый объект System.Drawing.Size(525 350)
$Form.startposition = «центральный экран»
#—— Определить все объекты GUI——-
# Define Label — это объект текстового поля, в котором будет отображаться имя виртуальной машины.
$Label1 = Новый объект System.Windows.Forms.Label
$Label1.AutoSize = $False
$Label1.Location = новый объект System.Drawing.Size(20,50)
$Label1.Size = Новый объект System.Drawing.Size(200,20)
$Label1.Text = $NotificationText
# Define Button 1 – это кнопка OK на экране выбора.
$Button1 = новый объект System.Windows.Forms.Button
$Button1.Location = новый объект System.Drawing.Size(20,70)
$Button1.Size = новый объект System.Drawing.Size(70,30)
$Button1.Text = «ОК»
$Button1.Add_Click({$Form.Close()})
$ Форма. Элементы управления. Добавить ($ Метка1)
$Форма.Управление.Добавить($Кнопка1)
#—-Заполнить форму—-
$Form.Add_Shown({$Form.Activate()})
$Форма.ШоуДиалог()
}
Write-Host 'Что-то неважное'
$NotificationText = 'Это уведомление'
Отображение-уведомление $NotificationText
Write-Host 'Что-то неважное'
Несмотря на длину этого сценария, он на самом деле очень похож на другой сценарий, который я вам показывал. Как и предыдущий скрипт, этот пишет что-то неважное, а затем добавляет в переменную фразу «Это уведомление», после чего передает переменную в функцию Display-Notification. Эта функция отображает текст уведомления (содержимое переменной) во всплывающем графическом окне до тех пор, пока вы не нажмете кнопку OK. В этот момент всплывающее окно закрывается, и сценарий возобновляется. В этом случае возобновление работы скрипта приводит к тому, что на экран выводится что-то еще неважное. Вот как выглядит результат:
Если вы хотите подробно узнать, как работает мой сценарий, я рекомендую прочитать серию статей о создании графического интерфейса PowerShell. Однако прямо сейчас я скажу вам, что всплывающее окно основано на использовании формы. Эта конкретная форма содержит два элемента.
Первым из этих элементов является метка. Метка отображает строку текста, содержащуюся в переменной $NotificationText.
Второй элемент, который используется в форме, — это кнопка. Кнопка помечена как OK, а нажатие кнопки закрывает форму. Когда форма закрывается, в окне PowerShell отображается слово «Отмена», а затем возобновляется оставшаяся часть сценария, как показано ниже.
Одна из вещей, которые мне всегда нравились в PowerShell, это то, что он хорошо поддается творчеству. Существует множество способов привлечь внимание к важным элементам в выходных данных сценария с помощью выходных уведомлений PowerShell. В данном случае я использовал звуковые, цветные и графические всплывающие окна, но, конечно, это не единственные варианты. Вероятно, вы могли бы привлечь внимание к определенным частям вывода сценария практически любым способом, который только можете себе представить.