Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

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

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

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