Взятие под контроль разрастания виртуальных машин (часть 11)

Опубликовано: 18 Апреля, 2023

  • Взятие под контроль разрастания виртуальных машин (часть 2)
  • Взятие под контроль разрастания виртуальных машин (часть 3)
  • Взятие под контроль разрастания виртуальных машин (часть 4)
  • Взятие под контроль разрастания виртуальных машин (часть 5)
  • Взятие под контроль разрастания виртуальных машин (часть 6)
  • Взятие под контроль разрастания виртуальных машин (часть 7)
  • Взятие под контроль разрастания виртуальных машин (часть 8)
  • Взятие под контроль разрастания виртуальных машин (часть 9)
  • Взятие под контроль разрастания виртуальных машин (часть 10)
  • Взятие под контроль разрастания виртуальных машин (часть 12)
  • Взятие под контроль разрастания виртуальных машин (часть 18)

В моей предыдущей статье я познакомил вас со сценарием, который отображал список всех недавно созданных виртуальных машин, а также тех, кто создал каждую виртуальную машину. Сценарий является хорошим началом, но было бы намного полезнее, если бы мы могли фильтровать выходные данные по дате или даже отслеживать тенденции создания и удаления виртуальных машин. Мы вернемся к этому достаточно скоро, но в этой статье мне нужно сделать паузу и немного больше рассказать вам о PowerShell.

Моя конечная цель — построить диаграмму, которая отслеживает создание и удаление виртуальных машин еженедельно или ежемесячно. А пока мне нужно показать вам, как выводить выходные данные скрипта PowerShell на диаграмму.

PowerShell не имеет собственных возможностей построения диаграмм, но Microsoft предоставляет бесплатный набор элементов управления диаграммами, которые работают с.NET Framework. Поскольку.NET Framework можно использовать через PowerShell, можно использовать элементы управления диаграммами Microsoft для создания диаграмм из отчетов PowerShell.

Вы можете скачать Microsoft Chart Controls здесь. Загрузка состоит из исполняемого файла размером 1,8 МБ. Просто убедитесь, что в вашей системе установлена версия 3.5.NET Framework, а затем загрузите и запустите файл. Процесс установки действительно прост. Мастер установки просто требует, чтобы вы приняли лицензионное соглашение, а затем несколько раз нажимали «Далее».

После установки Microsoft Chart Controls вы можете приступить к созданию диаграммы. Позвольте мне сразу сказать, что к процессу построения графиков нужно немного привыкнуть. Здесь и здесь есть несколько отличных руководств с примерами кода. Техника построения диаграмм, которую я собираюсь использовать, в основном представляет собой комбинацию техник, используемых на этих страницах, с добавлением достаточного количества моих собственных техник, чтобы сделать вещи интересными. Итак, с учетом сказанного, вот сценарий, который я создал для демонстрационных целей:

void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization")

$scriptpath = Split-Path-parent $MyInvocation.MyCommand.Definition

 

# объект диаграммы

$chart1 = Новый объект System.Windows.Forms.DataVisualization.Charting.Chart

$chart1.Ширина = 1000

$chart1.Высота = 1000

$chart1.BackColor = [System.Drawing.Color]::Белый

 

# заглавие

[void]$chart1.Titles.Add("Виртуальные машины созданы и удалены")

$chart1.Titles[0].Font = «Arial, 13pt»

$chart1.Titles[0].Alignment = "topLeft"

 

# область диаграммы

$chartarea = Новый объект System.Windows.Forms.DataVisualization.Charting.ChartArea

$chartarea.Name = «ОбластьДиаграммы1»

$chartarea.AxisY.Title = «Виртуальные машины»

$chartarea.AxisX.Title = «Время»

$chartarea.AxisY.Interval = 1

$chartarea.AxisX.Interval = 1

$chart1.ChartAreas.Add($chartarea)

 

# легенда

$legend = система нового объекта.Windows.Forms.DataVisualization.Charting.Legend

$legend.name = «Легенда1»

$chart1.Легенды.Добавить($легенда)

 

# источник данных

 

$DataSource1 = @{Январь=5; февраль=9; март=7; апрель=2; май=6}

$DataSource2 = @{Январь=8; февраль=2; март=1; апрель=4; май=6}

 

# Созданные виртуальные машины ряды данных

[void]$chart1.Series.Add("VM_Created")

$chart1.Series["VM_Created"].ChartType = "Линия"

$chart1.Series["VM_Created"].BorderWidth = 3

$chart1.Series["VM_Created"].IsVisibleInLegend = $true

$chart1.Series["VM_Created"].chartarea = "ChartArea1"

$chart1.Series["VM_Created"].Legend = "Легенда1"

$chart1.Series["VM_Created"].color = "Зеленый"

$Chart1.Series["VM_Created"].Points.DataBindXY($DataSource1.keys, $DataSource1.Values)

 

# Виртуальные машины удалили серию данных

[void]$chart1.Series.Add("VM_Deleted")

$chart1.Series["VM_Deleted"].ChartType = "Линия"

$chart1.Series["VM_Deleted"].IsVisibleInLegend = $true

$chart1.Series["VM_Deleted"].BorderWidth = 3

$chart1.Series["VM_Deleted"].chartarea = "ChartArea1"

$chart1.Series["VM_Deleted"].Legend = "Легенда1"

$chart1.Series["VM_Deleted"].color = "Синий"

$Chart1.Series["VM_Deleted"].Points.DataBindXY($DataSource2.keys, $DataSource2.Values)

 

# отображаем диаграмму на форме

 

$Form = Новый объект Windows.Forms.Form

$Form.Text = «Разрастание ВМ»

$Форма.Ширина = 1000

$Форма.Высота = 1000

$Form.controls.add($Chart1)

$Form.Add_Shown({$Form.Activate()})

$Форма.ШоуДиалог()

Вы можете увидеть, как выглядит вывод скрипта на рисунке A.

Изображение 14794
Рисунок A. Это диаграмма, созданная моим скриптом PowerShell.

Прежде чем я расскажу о том, как работает сценарий, я хочу отметить несколько вещей. Во-первых, вы заметите, что приведенный выше график содержит две линии. Одна строка представляет количество виртуальных машин, созданных в данном месяце, а другая — количество виртуальных машин, удаленных за тот же период времени. Легенда в верхней правой части диаграммы показывает, какая линия какая. Поэтому вы можете использовать диаграмму, подобную этой, для отслеживания тенденций создания виртуальных машин.

Следующее, что я должен упомянуть, это то, что вам не следует беспокоиться о данных, отображаемых на графике, по крайней мере, пока. На данный момент я жестко закодировал некоторые бессмысленные данные в скрипт только для того, чтобы мне было что отображать. В результате использования жестко запрограммированных поддельных данных месяцы в нижней части диаграммы в настоящее время не соответствуют порядку. Не беспокойтесь о положении месяцев, потому что мы исправим это, когда настроим скрипт для отображения реальных данных.

Так почему я использую поддельные данные? Что ж, реальные данные добавляют уровень сложности, и сейчас я хотел сосредоточиться исключительно на объяснении того, как работает процесс построения диаграмм. Я не собираюсь вдаваться в очень подробные объяснения, но есть несколько ключевых частей сценария, на которые я хочу обратить внимание.

Если вы посмотрите на исходный код, вы заметите, что скрипт разбит на разделы. Сначала мы определяем объект диаграммы. Далее мы присваиваем заголовок диаграмме. При этом мы можем даже указать шрифт заголовка.

Следующее, что нам нужно сделать, это установить некоторые параметры для области диаграммы. Другими словами, нам нужно контролировать способ отображения диаграммы. Как вы можете видеть в скрипте, я установил заголовок и интервал для осей X и Y. Интервал управляет масштабом диаграммы. Поскольку ни одно из моих значений данных не превышает 10, я установил интервал равным 1.

Затем я добавляю легенду к диаграмме и оттуда определяю свои источники данных. Это действительно важная часть. Я создал два источника данных, оба из которых являются массивами. Один называется $DataSource1, а другой — $DataSource2. Вы видели на рисунке, что на графике было две линии. Каждая строка соответствует источнику данных.

Хитрость создания диаграммы, содержащей несколько строк, заключается в том, что вы должны определить несколько рядов данных, по одному ряду для каждой строки. В данном случае я создал две серии. Одна серия называлась VM_Created, а другая — VM_Deleted. Вы можете настроить такие параметры, как тип диаграммы, используемая легенда и цвет отдельно для каждой серии.

Теперь взгляните на последнюю строку в определении серии. Это выглядит так:

$Chart1.Series["VM_Created"].Points.DataBindXY($DataSource1.keys, $DataSource1.Values)

$Chart1 относится к моему графику. У меня есть только одна диаграмма, поэтому обе серии будут использовать ее. Обратите внимание, что строка выше ссылается на $Chart1.Series["VM_Created"]. Это строка, которая добавляет данные из серии создания моей виртуальной машины на диаграмму. Эта команда также использует DataBindXY для связывания ключей и значений из $DataSource1 с серией VM_Created. Другими словами, я определил свои данные как $DataSource1, а затем связал эти данные с серией под названием VM_Created, которая будет нанесена на $Chart1 с помощью зеленой линии. Имейте в виду, что эта команда создает диаграмму, но не рисует ее на экране. Если вы хотите, чтобы диаграмма отображалась, вам придется использовать последний раздел сценария, чтобы определить форму Windows, а затем связать диаграмму с формой.

Вывод

В этой статье я показал вам основы использования PowerShell для создания диаграммы. В следующей статье серии мы начнем адаптировать наш скрипт VM Sprawl для поддержки построения графиков.

  • Взятие под контроль разрастания виртуальных машин (часть 2)
  • Взятие под контроль разрастания виртуальных машин (часть 3)
  • Взятие под контроль разрастания виртуальных машин (часть 4)
  • Взятие под контроль разрастания виртуальных машин (часть 5)
  • Взятие под контроль разрастания виртуальных машин (часть 6)
  • Взятие под контроль разрастания виртуальных машин (часть 7)
  • Взятие под контроль разрастания виртуальных машин (часть 8)
  • Взятие под контроль разрастания виртуальных машин (часть 9)
  • Взятие под контроль разрастания виртуальных машин (часть 10)
  • Взятие под контроль разрастания виртуальных машин (часть 12)