ค้นหาเว็บไซต์

การอัปเดตเทมเพลต Windows VM บน VMWare ด้วย PowerShell


ในการปรับใช้เครื่องเสมือนใหม่ใน VMWare โดยทั่วไปจะใช้เทมเพลต VM เทมเพลต VMWare VM เป็นสำเนาเครื่องเสมือนอ้างอิงที่มีการตั้งค่าที่กำหนด ซอฟต์แวร์ที่ติดตั้ง และการอัปเดตความปลอดภัย ผู้ดูแลระบบจำเป็นต้องอัปเดตเทมเพลต VM เป็นประจำเพื่อให้เป็นปัจจุบันอยู่เสมอ: ติดตั้งการอัปเดตความปลอดภัยของ Windows ใหม่ (อย่างน้อยเดือนละครั้ง) อัปเดตแอประบบและแอปพลิเคชัน อัปเดตข้อกำหนดการป้องกันไวรัส ฯลฯ

กระบวนการอัปเดตของเทมเพลต VM บน VMWare ประกอบด้วยขั้นตอนต่อไปนี้:

  1. เทมเพลตจากไลบรารีเนื้อหาถูกแปลงเป็นเครื่องเสมือน;

  2. หลังจากเริ่มต้น ผู้ดูแลระบบจะเข้าสู่ระบบ ติดตั้งการอัปเดต Windows ที่ได้รับการอนุมัติโดยใช้ WSUS อัปเดตซอฟต์แวร์ที่จำเป็น

  3. หลังจากติดตั้งการอัปเดตแล้ว VM จะเริ่มต้นใหม่ จากนั้นปิดและแปลงกลับเป็นเทมเพลต

ในบทความนี้ เราจะแสดงวิธีการติดตั้งการอัปเดต Windows ไปยังเทมเพลตเครื่องเสมือน VMWare โดยอัตโนมัติโดยไม่ต้องทำอะไรด้วยตนเอง

สำหรับเครื่องเสมือน VMWare คุณจะไม่สามารถใช้วิธีการรวมการอัปเดตเข้ากับอิมเมจ Windows ที่ใช้สำหรับอิมเมจหรือ distros แบบสแตนด์อโลนได้โดยตรง

คุณสามารถใช้ PowerCLI เพื่อติดตั้งการอัปเดตไปยังเครื่องเสมือน Windows เราถือว่าเครื่องมือ VMWare, PowerShell เวอร์ชัน 4 (หรือใหม่กว่า) และโมดูล PSWindowsUpdate ได้รับการติดตั้งในเทมเพลตเครื่องเสมือน ต้องอนุญาตให้เรียกใช้สคริปต์ PowerShell ในระบบปฏิบัติการเกสต์ตามนโยบายการดำเนินการสคริปต์

สคริปต์ 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 ในเครื่องเสมือนจะถูกจัดเก็บไว้ในรีจิสทรีแทนการปรับใช้ผ่าน GPO

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:$false

คุณสามารถเพิ่มสคริปต์ PowerShell นี้ลงใน Task Scheduler เพื่อติดตั้งการอัปเดตเทมเพลตโดยอัตโนมัติเดือนละครั้งหลังจาก Microsoft Patch Tuesday ไม่กี่วัน จากนั้น หากคุณปรับใช้เครื่องเสมือนใหม่จากเทมเพลต VMWare คุณอาจแน่ใจว่ามีการติดตั้งการอัปเดตความปลอดภัยของ Microsoft ล่าสุดในนั้น

บทความที่เกี่ยวข้อง