PowerShell ile VMWare'de Windows VM Şablonlarını Güncelleme
VMWare'de yeni sanal makineler dağıtmak için genellikle VM şablonları kullanılır. Bir VMWare VM şablonu, yapılandırılmış ayarlar, yüklü yazılım ve güvenlik güncellemeleriyle birlikte bir referans sanal makine kopyasıdır. Bir yöneticinin VM şablonunu güncel tutmak için düzenli olarak güncellemesi gerekir: yeni Windows güvenlik güncellemeleri yükleyin (en az ayda bir kez), sistem ve uygulama uygulamalarını güncelleyin, antivirüs tanımlarını güncelleyin, vb.
Bir VM şablonunun VMWare üzerinde güncelleme işlemi aşağıdaki aşamalardan oluşur:
İçerik Kitaplığından bir şablon sanal makineye dönüştürülür.;
Başlattıktan sonra bir yönetici oturum açar, WSUS kullanarak onaylı Windows güncellemelerini yükler, gerekli yazılımı günceller;
Güncellemeler yüklendikten sonra VM yeniden başlatılır, ardından kapatılır ve tekrar şablona dönüştürülür.
Bu yazımızda, Windows güncellemelerinin manuel olarak hiçbir şey yapmadan otomatik olarak bir VMWare sanal makine şablonuna nasıl kurulacağını göstereceğiz.
VMWare sanal makineleri için, bağımsız görüntüler veya dağıtımlar için kullanılan güncellemeleri bir Windows görüntüsüne entegre etme yöntemlerini doğrudan kullanamazsınız.
Bir Windows sanal makinesine güncellemeler yüklemek için PowerCLI'yi kullanabilirsiniz. Sanal makine şablonunda VMWare araçlarının, PowerShell sürüm 4'ün (veya daha yenisinin) ve PSWindowsUpdate modülünün kurulu olduğunu varsayıyoruz. PowerShell betiklerinin çalıştırılmasına, betik yürütme ilkesi tarafından konuk işletim sisteminde izin verilmelidir.
Aşağıdaki PowerCLI betiği, bir VMWare şablonunu otomatik olarak bir VM'ye dönüştürmenize ve WSUS'tan güvenlik güncellemelerini yüklemenize yardımcı olacaktır:
# Import the PowerCLI module
Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
# Connect to vCenter
connect-viserver de-vcenter1
$TeplateVMName="Win2016StdTemplate"
# Convert a template to a VM
Set-Template -Template $TeplateVMName -ToVM -Confirm:$false -RunAsync
# Make a 60 seconds delay
Start-sleep -s 60
# Start the virtual machine
Start-VM -VM $TeplateVMName | Get-VMQuestion | Set-VMQuestion -DefaultOption -Confirm:$false
Start-sleep -s 120
# Get an administrator credentials from an encrypted file (if you do not want to keep the password in the PS script in clear text)
$adminname = "administrator"
$Pwd = Get-Content c:\Scripts\VMWare\vm_admin_passfile.txt | ConvertTo-SecureString $
cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $adminname, $Pwd
# Run the command to install all available updates in the guest OS using VMWare Tools (the update installation log is saved to a file: C:\temp\Update.log)VM'nin bir DHCP sunucusundan bir IP adresi alabileceği bir sanal ağda bulunduğu varsayılmaktadır. Bir sanal makinedeki WSUS ayarları, bir GPO aracılığıyla dağıtmak yerine kayıt defterinde depolanır.
Invoke-VMScript -ScriptType PowerShell -ScriptText "Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot" -VM $TeplateVMName -GuestCredential $Cred | Out-file -Filepath C:\temp\Update.log -Append
Start-sleep -s 1800
# Update VMTools version
Update-Tools -VM $TeplateVMName -NoReboot
# Clean up the WinSxS component store and optimize the image with DISM
Invoke-VMScript -ScriptType PowerShell -ScriptText "Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase" -VM $TeplateVMName -GuestCredential $Cred
Start-sleep -s 1800
# Force restart the VM
Restart-VMGuest -VM $TeplateVMName -Confirm:$false
# Shut the VM down and convert it back to the template
Shutdown-VMGuest -VM $TeplateVMName -Confirm:$false -RunAsync
Start-sleep -s 180
Set-VM -VM $TeplateVMName -ToTemplate -Confirm:$falseMicrosoft Yama Salı'dan birkaç gün sonra ayda bir kez şablona yapılan güncellemeleri otomatik olarak yüklemek için bu PowerShell betiğini Görev Zamanlayıcı'ya ekleyebilirsiniz. Ardından, bir VMWare şablonundan yeni bir sanal makine dağıtırsanız, içinde en son Microsoft güvenlik güncellemelerinin kurulu olduğundan emin olabilirsiniz.
