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

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

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

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

Итак, вот мой план для этой статьи. Я хочу начать с предоставления вам исходного кода скрипта, который собирает данные о создании и удалении виртуальных машин за целый год. Я не буду вдаваться в подробности того, как работает сценарий, потому что его механика идентична тому, над чем мы уже работали. Сценарий просто стал намного длиннее.

Еще одна вещь, которую я хочу сделать в этой статье, — показать вам пару приемов, которые вы можете использовать, чтобы сделать этот скрипт более полезным в реальном мире.

Итак, с учетом сказанного, вот сценарий:

Функция Get-MyData($Server){

#Функция для получения информации о данных журнала ВМ

$MySession = New-PSSession -ComputerName $Server

#Инициализировать переменные

Invoke-Command -Session $MySession -ScriptBlock {

 

#январь

$NumJanCreateEvents = '0'

$JanCreateEvents = ”

$NumJanDeleteEvents = '0'

$JanDeleteEvents = ”

$JanStartDate = '01.01.2016 00:00:00'

$JanEndDate = '30.01.2016 23:59:59'

 

#февраль

$NumFebCreateEvents = '0'

$FebCreateEvents = ”

$NumFebDeleteEvents = '0'

$FebDeleteEvents = ”

$FebStartDate = '01.02.2016 00:00:00'

$FebEndDate = '29.02.2016 23:59:59'

 

#Маршировать

$NumMarCreateEvents = '0'

$MarCreateEvents = ”

$NumMarDeleteEvents = '0'

$MarDeleteEvents = ”

$MarStartDate = '01.03.2016 00:00:00'

$MarEndDate = '30.03.2016 23:59:59'

 

#Апреля

$NumAprCreateEvents = '0'

$AprCreateEvents = ”

$NumAprDeleteEvents = '0'

$AprDeleteEvents = ”

$AprStartDate = '01.04.2016 00:00:00'

$AprEndDate = '30.04.2016 23:59:59'

 

#Май

$NumMayCreateEvents = '0'

$MayCreateEvents = ”

$NumMayDeleteEvents = '0'

$MayDeleteEvents = ”

$MayStartDate = '01.05.2016 00:00:00'

$MayEndDate = '31.05.2016 23:59:59'

 

#Июнь

$NumJunCreateEvents = '0'

$JunCreateEvents = ”

$NumJunDeleteEvents = '0'

$JunDeleteEvents = ”

$JunStartDate = '01.06.2015, 00:00:00'

$JunEndDate = '30.06.2015 23:59:59'

 

#Июль

$NumJulCreateEvents = '0'

$JulCreateEvents = ”

$NumJulDeleteEvents = '0'

$JulDeleteEvents = ”

$JulStartDate = '01.07.2015, 00:00:00'

$JulEndDate = '31.07.2015 23:59:59'

 

#Август

$NumAugCreateEvents = '0'

$AugCreateEvents = ”

$NumAugDeleteEvents = '0'

$AugDeleteEvents = ”

$AugStartDate = '01.08.2015 00:00:00'

$AugEndDate = '31.08.2015 23:59:59'

 

#Сентябрь

$NumSepCreateEvents = '0'

$SepCreateEvents = ”

$NumSepDeleteEvents = '0'

$SepDeleteEvents = ”

$SepStartDate = '01.09.2015, 00:00:00'

$SepEndDate = '30.09.2015 23:59:59'

 

#октябрь

$NumOctCreateEvents = '0'

$OctCreateEvents = ”

$NumOctDeleteEvents = '0'

$OctDeleteEvents = ”

$OctStartDate = '01.10.2015, 00:00:00'

$OctEndDate = '31.10.2015 23:59:59'

 

#ноябрь

$NumNovCreateEvents = '0'

$NovCreateEvents = ”

$NumNovDeleteEvents = '0'

$NovDeleteEvents = "

$NovStartDate = '01.11.2015, 00:00:00'

$NovEndDate = '30.11.2015 23:59:59'

 

#Декабрь

$NumDecCreateEvents = '0'

$DecCreateEvents = ”

$NumDecDeleteEvents = '0'

$ DecDeleteEvents = ”

$DecStartDate = '01.12.2015 00:00:00'

$DecEndDate = '31.12.2015 23:59:59'

 

}

 

# январь 2016 г.

$JanCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$JanStartDate;EndTime=$JanEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumJanCreateEvents = $JanCreateEvents.count

$JanDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$JanStartDate;EndTime=$JanEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumJanDeleteEvents = $JanDeleteEvents.count

 

# февраль 2016 г.

$FebCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$FebStartDate;EndTime=$FebEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumFebCreateEvents = $FebCreateEvents.count

$FebDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$FebStartDate;EndTime=$FebEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumFebDeleteEvents = $FebDeleteEvents.count

 

# март 2016 г.

$MarCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$MarStartDate;EndTime=$MarEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumMarCreateEvents = $MarCreateEvents.count

$MarDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$MarStartDate;EndTime=$MarEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumMarDeleteEvents = $MarDeleteEvents.count

 

# апрель 2016 г.

$AprCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$AprStartDate;EndTime=$AprEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumAprCreateEvents = $AprCreateEvents.count

$AprDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$AprStartDate;EndTime=$AprEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumAprDeleteEvents = $AprDeleteEvents.count

 

# май 2016 г.

$MayCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$MayStartDate;EndTime=$MayEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumMayCreateEvents = $MayCreateEvents.count

$MayDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$MayStartDate;EndTime=$MayEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumMayDeleteEvents = $MayDeleteEvents.count

 

# июнь 2015 г.

$JunCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$JunStartDate;EndTime=$JunEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumJunCreateEvents = $JunCreateEvents.count

$JunDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$JunStartDate;EndTime=$JunEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumJunDeleteEvents = $JunDeleteEvents.count

 

# июль 2015 г.

$JulCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$JulStartDate;EndTime=$JulEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumJulCreateEvents = $JulCreateEvents.count

$JulDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$JulStartDate;EndTime=$JulEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumJulDeleteEvents = $JulDeleteEvents.count

 

# август 2015 г.

$AugCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$AugStartDate;EndTime=$AugEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumAugCreateEvents = $AugCreateEvents.count

$AugDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$AugStartDate;EndTime=$AugEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumAugDeleteEvents = $AugDeleteEvents.count

 

# сентябрь 2015 г.

$SepCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$SepStartDate;EndTime=$SepEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumSepCreateEvents = $SepCreateEvents.count

$SepDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$SepStartDate;EndTime=$SepEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumSepDeleteEvents = $SepDeleteEvents.count

 

# Октябрь 2015 г.

$OctCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$OctStartDate;EndTime=$OctEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumOctCreateEvents = $OctCreateEvents.count

$OctDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$OctStartDate;EndTime=$OctEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumOctDeleteEvents = $OctDeleteEvents.count

 

# ноябрь 2015 г.

$NovCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$NovStartDate;EndTime=$NovEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumNovCreateEvents = $NovCreateEvents.count

$NovDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$NovStartDate;EndTime=$NovEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumNovDeleteEvents = $NovDeleteEvents.count

 

# декабрь 2015 г.

$DecCreateEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13002;StartTime=$DecStartDate;EndTime=$DecEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumDecCreateEvents = $DecCreateEvents.count

$DecDeleteEvents = Invoke-Command -Session $MySession -ScriptBlock {Get-WinEvent –FilterHashTable @{LogName=”Microsoft-Windows-Hyper-V-VMMS-Admin”;ID=13003;StartTime=$DecStartDate;EndTime=$DecEndDate} -ErrorAction 'Продолжить молча'}

$Global:NumDecDeleteEvents = $DecDeleteEvents.count

 

# Ежемесячный выпуск

Пишите-Хозяин » «

Write-Host «Сервер:» -NoNewLine; Запись-хост $Server

 

Write-Host «Январь Создать события:» -NoNewLine; Запись хоста $NumJanCreateEvents

Write-Host «Январские события удаления: » -NoNewLine; Узел записи $NumJanDeleteEvents

 

Write-Host «Февральские события: » -NoNewLine; Запись хоста $NumFebCreateEvents

Write-Host «Февральские события удаления:» -NoNewLine; Запись хоста $NumFebDeleteEvents

 

Write-Host «Марш Создать События:» -NoNewLine; Запись хоста $NumMarCreateEvents

Write-Host «Марш Удалить События:» -NoNewLine; Запись хоста $NumMarDeleteEvents

 

Write-Host «Апрельские события: » -NoNewLine; Запись хоста $NumAprCreateEvents

Write-Host «Апрельские события удаления: » -NoNewLine; Узел записи $NumAprDeleteEvents

 

Write-Host «Может создавать события:» -NoNewLine; Запись хоста $NumMayCreateEvents

Write-Host «Может удалять события:» -NoNewLine; Узел записи $NumMayDeleteEvents

 

Write-Host «Июньские события: » -NoNewLine; Узел записи $NumJunCreateEvents

Write-Host «Июньские события удаления:» -NoNewLine; Узел записи $NumJunDeleteEvents

 

Write-Host «Июльские события: » -NoNewLine; Запись хоста $NumJulCreateEvents

Write-Host «Июль Удалить События:» -NoNewLine; Узел записи $NumJulDeleteEvents

 

Write-Host «Август Создать События:» -NoNewLine; Запись хоста $NumAugCreateEvents

Write-Host «Август Удалить События:» -NoNewLine; Узел записи $NumAugDeleteEvents

 

Write-Host «Создание событий сентября:» -NoNewLine; Узел записи $NumSepCreateEvents

Write-Host «Сентябрьские события удаления:» -NoNewLine; Узел записи $NumSepDeleteEvents

 

Write-Host «Октябрьские события: » -NoNewLine; Запись хоста $NumOctCreateEvents

Write-Host «Октябрьские события удаления:» -NoNewLine; Узел записи $NumOctDeleteEvents

 

Write-Host «Ноябрьские события: » -NoNewLine; Запись хоста $NumNovCreateEvents

Write-Host «Ноябрьские события удаления:» -NoNewLine; Узел записи $NumNovDeleteEvents

 

Write-Host «Декабрьские события: » -NoNewLine; Запись хоста $NumDecCreateEvents

Write-Host «Декабрьские события удаления:» -NoNewLine; Узел записи $NumDecDeleteEvents

 

Пишите-Хозяин » «

}

 

#Тело сценария

 

#Инициализировать переменные

$TotalJanCreateEvents = '0'

$TotalJanDeleteEvents = '0'

$TotalFebCreateEvents = '0'

$TotalFebDeleteEvents = '0'

$TotalMarCreateEvents = '0'

$TotalMarDeleteEvents = '0'

$TotalAprCreateEvents = '0'

$TotalAprDeleteEvents = '0'

$TotalMayCreateEvents = '0'

$TotalMayDeleteEvents = '0'

$TotalJunCreateEvents = '0'

$TotalJunDeleteEvents = '0'

$TotalJulCreateEvents = '0'

$TotalJulDeleteEvents = '0'

$TotalAugCreateEvents = '0'

$TotalAugDeleteEvents = '0'

$TotalSepCreateEvents = '0'

$TotalSepDeleteEvents = '0'

$TotalOctCreateEvents = '0'

$TotalOctDeleteEvents = '0'

$TotalNovCreateEvents = '0'

$TotalNovDeleteEvents = '0'

$TotalDecCreateEvents = '0'

$TotalDecDeleteEvents = '0'

 

$Servers = @("Hyper-V-1", "Hyper-V-2", "Hyper-V-3", "Hyper-V-4", "Prod1", "Prod2")

ForEach ($Server в $Servers) {

 

$ServerName = $Сервер

Get-MyData $ServerName

$TotalJanCreateEvents = [int]$TotalJanCreateEvents + [int]$NumJanCreateEvents

$TotalJanDeleteEvents = [int]$TotalJanDeleteEvents + [int]$NumJanDeleteEvents

$TotalFebCreateEvents = [int]$TotalFebCreateEvents + [int]$NumFebCreateEvents

$TotalFebDeleteEvents = [int]$TotalFebDeleteEvents + [int]$NumFebDeleteEvents

$TotalMarCreateEvents = [int]$TotalMarCreateEvents + [int]$NumMarCreateEvents

$TotalMarDeleteEvents = [int]$TotalMarDeleteEvents + [int]$NumMarDeleteEvents

$TotalAprCreateEvents = [int]$TotalAprCreateEvents + [int]$NumAprCreateEvents

$TotalAprDeleteEvents = [int]$TotalAprDeleteEvents + [int]$NumAprDeleteEvents

$TotalMayCreateEvents = [int]$TotalMayCreateEvents + [int]$NumMayCreateEvents

$TotalMayDeleteEvents = [int]$TotalMayDeleteEvents + [int]$NumMayDeleteEvents

$TotalJunCreateEvents = [int]$TotalJunCreateEvents + [int]$NumJunCreateEvents

$TotalJunDeleteEvents = [int]$TotalJunDeleteEvents + [int]$NumJunDeleteEvents

$TotalJulCreateEvents = [int]$TotalJulCreateEvents + [int]$NumJulCreateEvents

$TotalJulDeleteEvents = [int]$TotalJulDeleteEvents + [int]$NumJulDeleteEvents

$TotalAugCreateEvents = [int]$TotalAugCreateEvents + [int]$NumAugCreateEvents

$TotalAugDeleteEvents = [int]$TotalAugDeleteEvents + [int]$NumAugDeleteEvents

$TotalSepCreateEvents = [int]$TotalSepCreateEvents + [int]$NumSepCreateEvents

$TotalSepDeleteEvents = [int]$TotalSepDeleteEvents + [int]$NumSepDeleteEvents

$TotalOctCreateEvents = [int]$TotalOctCreateEvents + [int]$NumOctCreateEvents

$TotalOctDeleteEvents = [int]$TotalOctDeleteEvents + [int]$NumOctDeleteEvents

$TotalNovCreateEvents = [int]$TotalNovCreateEvents + [int]$NumNovCreateEvents

$TotalNovDeleteEvents = [int]$TotalNovDeleteEvents + [int]$NumNovDeleteEvents

$TotalDecCreateEvents = [int]$TotalDecCreateEvents + [int]$NumDecCreateEvents

$TotalDecDeleteEvents = [int]$TotalDeleteEvents + [int]$NumDecDeleteEvents

}

 

Write-Host «Всего событий создания за январь:» -NoNewLine; Запись хоста $TotalJanCreateEvents

Write-Host «Всего событий удаления за январь: » -NoNewLine; Узел записи $TotalJanDeleteEvents

Write-Host «Всего событий за февраль: » -NoNewLine; Запись хоста $TotalFebCreateEvents

Write-Host «Всего событий удаления за февраль:» -NoNewLine; Запись хоста $TotalFebDeleteEvents

Write-Host «Всего событий за март: » -NoNewLine; Запись хоста $TotalMarCreateEvents

Write-Host «Всего событий удаления за март:» -NoNewLine; Узел записи $TotalMarDeleteEvents

Write-Host «Всего событий за апрель: » -NoNewLine; Запись хоста $TotalAprCreateEvents

Write-Host «Всего событий удаления за апрель:» -NoNewLine; Узел записи $TotalAprDeleteEvents

Write-Host «Всего может создать событий:» -NoNewLine; Запись хоста $TotalMayCreateEvents

Write-Host «Всего событий, которые могут быть удалены:» -NoNewLine; Узел записи $TotalMayDeleteEvents

Write-Host «Всего событий создания в июне:» -NoNewLine; Узел записи $TotalJunCreateEvents

Write-Host «Всего событий удаления в июне: » -NoNewLine; Узел записи $TotalJunDeleteEvents

Write-Host «Всего июльских событий создания:» -NoNewLine; Запись хоста $TotalJulCreateEvents

Write-Host «Всего событий удаления в июле: » -NoNewLine; Узел записи $TotalJulDeleteEvents

Write-Host «Всего событий создания за август: » -NoNewLine; Запись хоста $TotalAugCreateEvents

Write-Host «Всего событий удаления в августе:» -NoNewLine; Узел записи $TotalAugDeleteEvents

Write-Host «Всего событий за сентябрь: » -NoNewLine; Запись хоста $TotalSepCreateEvents

Write-Host «Всего событий удаления в сентябре:» -NoNewLine; Узел записи $TotalSepDeleteEvents

Write-Host «Всего событий за октябрь: » -NoNewLine; Узел записи $TotalOctCreateEvents

Write-Host «Всего событий удаления за октябрь: » -NoNewLine; Узел записи $TotalOctDeleteEvents

Write-Host «Всего событий за ноябрь: » -NoNewLine; Узел записи $TotalNovCreateEvents

Write-Host «Всего ноябрьских событий удаления: » -NoNewLine; Узел записи $TotalNovDeleteEvents

Write-Host «Всего декабрьских событий по созданию: » -NoNewLine; Узел записи $TotalDecCreateEvents

Write-Host «Всего декабрьских событий удаления: » -NoNewLine; Узел записи $TotalDecDeleteEvents

Вы можете увидеть частичный вывод скрипта на рисунке A.

Изображение 14704
Рисунок A: Это результат моего скрипта.

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

PowerShell предлагает множество различных вариантов для этого. Вы можете использовать командлет Out-File для создания текстового файла. PowerShell также предоставляет командлеты для создания файлов HTML и CSV. Другим вариантом может быть использование простого перенаправления путем добавления знака «больше», за которым следует имя файла (два знака «больше» используются для добавления файла, а не для его перезаписи).

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

В PowerShell вы можете получить текущую дату с помощью командлета Get-Date. Затем вы можете найти дату из прошлого, добавив.AddDays и отрицательное число. Например, если вы хотите найти дату 60-дневной давности, вы можете использовать эту команду:

(Получить дату).AddDays(-60)

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

Изображение 14705
Рисунок B: Вы можете использовать команду Get-Date для определения дат из прошлого.

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

Вывод

Теперь, когда у нас есть хорошо работающий скрипт, пришло время вывести данные на график. Я покажу, как это сделать в следующей статье.

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