У середовищі VMWare для розгортання нових віртуальних машин в більшості випадків використовуються шаблони ВМ (VM templates). Шаблон ВМ VMWare це еталонна копія віртуальної машини з заданими настройками, встановленим софтом, оновленнями безпеки. Адміністратору потрібно періодично оновлювати шаблон ВМ для підтримки його в актуальному стані: встановлювати нові оновлення безпеки Windows (як мінімум раз на місяць), оновлювати системне і прикладне ПЗ і т.д.

Процес оновлення шаблону віртуальної машини виглядає наступним чином:

  1. Шаблон з Content Library конвертується в віртуальну машину;
  2. Після включення ВМ, адміністратор логинится, виконує установку схвалених оновлень Windows з WSUS, оновлює необхідне ПО;
  3. Після установки оновлень, ВМ потрібно перезавантажити, вимкнути і конвертувати назад в шаблон.

У цій статті ми покажемо, як автоматично встановити оновлення Windows в шаблон віртуальної машини VMWare без необхідності виконувати ручні дії.

Для установки оновлень в віртуальну машину можна використовувати PowerCLI. Передбачається, що в шаблоні ВМ встановлено VMWare Tools, версія PowerShell не нижче 4 і модуль PSWindowsUpdate, а в гостьовій ОС дозволений запуск PowerShell скриптів.

Наступний PowerCLI скрипт дозволить вам автоматично конвертувати шаблон в ВМ і встановити оновлення безпеки з WSUS:

# Загрузка модуля PowerCLI
Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
# Подключение к vCenter
connect-viserver vcenter1
$TeplateVMName="W2K16Template"
# Конвертация шаблона в ВМ
Set-Template -Template $TeplateVMName -ToVM -Confirm:$false –RunAsync
# Задержка 60 сек
Start-sleep -s 60
# Включить виртуальную машину
Start-VM -VM $TeplateVMName | Get-VMQuestion | Set-VMQuestion -DefaultOption -Confirm:$false
Start-sleep -s 120
# Загрузка пароля администратора из зашифрованного файла (если вы не хотите хранить пароль в скрипте в открытом виде)
$adminname = "administrator"
$Pwd = Get-Content c:pspassfile.txt | ConvertTo-SecureString $
cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $adminname, $Pwd
# Запуск команды установки всех доступных обновлений в гостевой ОС через VMWare Tools (лог установки обновлений сохраняется в файл C:Update.log

Предполагается, что ВМ находится в виртуальной сети, в которой можно получит IP адрес от DHCP сервера. Настройки WSUS в виртуальной машине хранятся в реестре, а не распространяются через GPO.

Invoke-VMScript -ScriptType PowerShell -ScriptText "Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot" -VM $TeplateVMName -GuestCredential $Cred | Out-file -Filepath C:Update.log -Append
Start-sleep -s 1800
# Обновление версии VMTools
Update-Tools -VM $$TeplateVMName -NoReboot
# Очистка хранилища компонентов WinSxS и оптимизация образа с помощью dism
Invoke-VMScript -ScriptType PowerShell -ScriptText " Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase" -VM $TeplateVMName -GuestCredential $Cred
Start-sleep -s 1800
# Принудительный перезапуск ВМ
Restart-VMGuest -VM $TeplateVMName -Confirm:$false
# Выключение ВМ и преобразование ее обратно в шаблон
Shutdown-VMGuest –VM $TeplateVMName -Confirm:$false –RunAsync
Start-sleep -s 180
Set-VM –VM $TeplateVMName -ToTemplate -Confirm:$false

powershell скрипт для автоматичної установки оновлень Windows в шаблон віртуальної машини VMWare

Ви можете додати цей PowerShell скрипт в планувальник, щоб автоматично встановлювати оновлення в шаблон раз місяць через кілька днів після Patch Tuesdays. Тепер при розгортанні нової віртуальної машини з образу в VMWare ви можете гарантувати, що в ній встановлені останні оновлення безпеки Microsoft.

Leave a Reply

Your email address will not be published. Required fields are marked *