ในการปรับใช้เครื่องเสมือนใหม่ใน VMWare โดยทั่วไปจะใช้เทมเพลต VM เทมเพลต VMWare VM คือสำเนาเครื่องเสมือนอ้างอิงที่มีการตั้งค่าที่กำหนดค่าไว้ ซอฟต์แวร์ที่ติดตั้ง และการอัปเดตความปลอดภัย ผู้ดูแลระบบจำเป็นต้องอัปเดตเทมเพลต VM เป็นประจำเพื่อให้ทันสมัยอยู่เสมอ:ติดตั้งการอัปเดตความปลอดภัยของ Windows ใหม่ (อย่างน้อยเดือนละครั้ง) อัปเดตแอประบบและแอปพลิเคชัน อัปเดตข้อกำหนดของโปรแกรมป้องกันไวรัส ฯลฯ
กระบวนการอัปเดตของเทมเพลต VM บน VMWare ประกอบด้วยขั้นตอนต่อไปนี้:
- เทมเพลตจากไลบรารีเนื้อหาจะถูกแปลงเป็นเครื่องเสมือน
- หลังจากเริ่มต้น ผู้ดูแลระบบจะเข้าสู่ระบบ ติดตั้งการอัปเดต Windows ที่ได้รับอนุมัติโดยใช้ WSUS อัปเดตซอฟต์แวร์ที่จำเป็น
- หลังจากติดตั้งการอัปเดตแล้ว VM จะเริ่มต้นใหม่ จากนั้นจึงเปลี่ยนและแปลงกลับไปเป็นเทมเพลต
ในบทความนี้เราจะแสดงวิธีการติดตั้งการอัปเดต Windows ให้กับเทมเพลตเครื่องเสมือน VMWare โดยอัตโนมัติโดยไม่ต้องดำเนินการใดๆ ด้วยตนเอง
สำหรับเครื่องเสมือน VMWare คุณจะไม่สามารถใช้วิธีการรวมการอัปเดตเข้ากับอิมเมจ Windows ที่ใช้สำหรับอิมเมจแบบสแตนด์อโลนหรือ distros ได้โดยตรงคุณสามารถใช้ PowerCLI เพื่อติดตั้งการอัปเดตไปยังเครื่องเสมือนของ Windows เราคิดว่าเครื่องมือ VMWare, PowerShell เวอร์ชัน 4 (หรือใหม่กว่า) และโมดูล PSWindowsUpdate ได้รับการติดตั้งในเทมเพลตเครื่องเสมือน ต้องอนุญาตให้เรียกใช้สคริปต์ PowerShell ใน guest OS โดยนโยบายการเรียกใช้สคริปต์
สคริปต์ PowerCLI ด้านล่างจะช่วยให้คุณแปลงเทมเพลต VMWare เป็น VM โดยอัตโนมัติและติดตั้งการอัปเดตความปลอดภัยจาก WSUS:
# 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 จะอยู่ในเครือข่ายเสมือนที่สามารถรับที่อยู่ IP จากเซิร์ฟเวอร์ DHCP ได้ การตั้งค่า WSUS ในเครื่องเสมือนจะถูกเก็บไว้ในรีจิสทรีแทนที่จะปรับใช้ผ่าน GPOInvoke-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:$false
คุณสามารถเพิ่มสคริปต์ PowerShell นี้ใน Task Scheduler เพื่อติดตั้งการอัปเดตไปยังเทมเพลตโดยอัตโนมัติเดือนละครั้งหลังจาก Microsoft Patch Tuesday สองสามวัน จากนั้น หากคุณปรับใช้เครื่องเสมือนใหม่จากเทมเพลต VMWare คุณอาจแน่ใจว่ามีการติดตั้งการอัปเดตความปลอดภัยของ Microsoft ล่าสุดในนั้น