Взятие под контроль разрастания виртуальных машин (часть 17)
- Взятие под контроль разрастания виртуальных машин (часть 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.
Рисунок A: Это результат моего скрипта.
Как видите, сценарий работает довольно хорошо, но есть несколько вещей, которые мы могли бы сделать, чтобы сделать его еще лучше. Одним из возможных вариантов может быть запись вывода сценария в файл, что упростит просмотр и обеспечит долгосрочное хранение данных.
PowerShell предлагает множество различных вариантов для этого. Вы можете использовать командлет Out-File для создания текстового файла. PowerShell также предоставляет командлеты для создания файлов HTML и CSV. Другим вариантом может быть использование простого перенаправления путем добавления знака «больше», за которым следует имя файла (два знака «больше» используются для добавления файла, а не для его перезаписи).
Еще одна вещь, которую мы потенциально могли бы сделать, — это изменить скрипт для динамического расчета дат. Я не собираюсь этого делать, потому что это потребует серьезной переработки сценария, но я, по крайней мере, хочу показать вам технику, которую вы можете использовать, если хотите попробовать изменить сценарий самостоятельно.
В PowerShell вы можете получить текущую дату с помощью командлета Get-Date. Затем вы можете найти дату из прошлого, добавив.AddDays и отрицательное число. Например, если вы хотите найти дату 60-дневной давности, вы можете использовать эту команду:
(Получить дату).AddDays(-60)
Вы можете увидеть, как выглядит эта команда на рисунке B.
Рисунок B: Вы можете использовать команду Get-Date для определения дат из прошлого.
Еще одна вещь, которая приходит на ум, — импортировать список серверов из файла или из запроса, в отличие от жесткого кодирования списка. По общему признанию, было бы проще получить имена серверов из списка, чем выполнять динамический запрос, потому что PowerShell не предоставляет хорошего способа для перечисления всех хостов Hyper-V, которые использует организация. Однако одну такую функцию можно найти здесь.
Вывод
Теперь, когда у нас есть хорошо работающий скрипт, пришло время вывести данные на график. Я покажу, как это сделать в следующей статье.
- Взятие под контроль разрастания виртуальных машин (часть 2)
- Взятие под контроль разрастания виртуальных машин (часть 3)
- Взятие под контроль разрастания виртуальных машин (часть 4)
- Взятие под контроль разрастания виртуальных машин (часть 5)
- Взятие под контроль разрастания виртуальных машин (часть 6)
- Взятие под контроль разрастания виртуальных машин (часть 7)
- Взятие под контроль разрастания виртуальных машин (часть 8)
- Взятие под контроль разрастания виртуальных машин (часть 9)
- Взятие под контроль разрастания виртуальных машин (часть 10)
- Взятие под контроль разрастания виртуальных машин (часть 11)
- Взятие под контроль разрастания виртуальных машин (часть 12)
- Взятие под контроль разрастания виртуальных машин (часть 13)
- Взятие под контроль разрастания виртуальных машин (часть 15)
- Взятие под контроль разрастания виртуальных машин (часть 18)