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

Опубликовано: 16 Марта, 2023
Использование выходных уведомлений 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. В данном случае я использовал звуковые, цветные и графические всплывающие окна, но, конечно, это не единственные варианты. Вероятно, вы могли бы привлечь внимание к определенным частям вывода сценария практически любым способом, который только можете себе представить.