Olá,
Em meu laboratório virtual sempre mantenho alguns VHDs base para acelerar o processo de criação dos servidores virtuais, mas mantê-los atualizados sempre foi um desafio. Depois de quebrar a cabeça consegui criar um script que aplica os pacotes de atualização a um VHD sem que eu precise ligar a maquina virtual de base para isso.
Utilizando os comandos do modulo Dism para as tarefas no disco e o wsusoffline para baixar os pacotes de atualização, consegui automatizar esse processo, me fazendo economizar muito tempo na manutenção do meu laboratório virtual.
O primeiro passo será baixar os updates com o client WSUS Offline, que basicamente consiste em selecionar os pacotes desejados e clicar em Start:
Vamos agora montar o VHD que será atualizado:
#Mount VHD
Mount-WindowsImage -ImagePath 'D:\Hyper-V\Virtual Hard Disks\WindowsServer2012R2.vhdx' -Path 'D:\Temp\' -Index 1
Feito isso vamos criar uma lista com os pacotes que serão aplicados na imagem:
#Enumerate Updates
$Updates = Get-ChildItem -Path 'D:\wsusoffline\client\w63-x64\glb' | Where-Object -FilterScript {($PSItem.extension -eq ".msu") -or ($PSItem.extension -eq ".cab")} | Select-Object -ExpandProperty fullname
Em sequida utilizaremos um laço Foreach e o comando Add-WindowsPackage para aplicar o pacote na imagem montada:
#Apply Updates
foreach($update in $Updates){
Write-Verbose $Update
Add-WindowsPackage -PackagePath $Update -Path 'D:\Temp' -Verbose
}
Concluida essa etapa basta desmontarmos o disco salvando ou descartando as mudanças realizadas:
#Dismount VHD saving changes
Dismount-WindowsImage -Path 'D:\Temp\' -Save
#Dismount VHD discarding changes
Dismount-WindowsImage -Path 'D:\Temp\' -Discard
Com isso finalizamos o update offline em nosso disco.
Aqui esta o Script Completo:
#Mount VHD
Mount-WindowsImage -ImagePath 'D:\Hyper-V\Virtual Hard Disks\WindowsServer2012R2.vhdx' -Path 'D:\Temp\' -Index 1
#Enumerate Updates
$Updates = Get-ChildItem -Path 'D:\wsusoffline\client\w63-x64\glb' | Where-Object -FilterScript {($PSItem.extension -eq ".msu") -or ($PSItem.extension -eq ".cab")} | Select-Object -ExpandProperty fullname
#Apply Updates
foreach($update in $Updates){
Add-WindowsPackage -PackagePath $Update -Path 'D:\Temp' -Verbose
}
#Dismount VHD saving changes
Dismount-WindowsImage -Path 'D:\Temp\' -Save
Espero que essa dica seja util para você atualizar seu laboratório virtual de maneira automatizada.
Dúvidas? Sugestões? Comente!
Até a próxima!
1 Comments
up