Установка обновлений Windows в шаблоны виртуальных машин VMWare

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

Процесс обновления шаблона виртуальной машины выглядит следующим образом:

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

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

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

Для установки обновлений в виртуальную машину можно использовать 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:\ps\passfile.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.


Предыдущая статья Следующая статья


Комментариев: 5 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)