我希望自动化在我的VM上安装WSUS更新的过程。简要概述,以下是我想要完成的事情(请告诉我,如果我的方法是愚蠢的,我很乐意为所有这些学习正确的方法。):
我目前能够检查特定虚拟机是否有更新并拍摄快照。现在我知道我可以让脚本的这一部分运行并配置GPO来完成剩下的任务,但我的思考过程是如果我可以在脚本中完成所有操作,我将能够检查快照在安装更新之前存在VM。下面你可以看到我的脚本现在做了什么。
foreach ($vm in $vms) {
if ($vm.PowerState -eq "poweredOn") {
$output = Invoke-VMScript -ScriptText $script -VM $vm -GuestCredential $guestCred
if ($output.ScriptOutput -Notlike '0*') {
New-Snapshot -VM $vm -Name BeforeWSUS
}
}
}
在此之后,我想检查vm是否存在快照,然后安装WSUS更新。如果需要重新启动,请重新启动。
有办法做到这一点吗?更好的方法吗?非常感谢一些见解,我是Powershell的新手。
编辑:我已经检查过PSWindowsUpdate模块,是否需要在我计划更新的每个VM上?
答案 0 :(得分:1)
是的,您需要在每个VM上安装PSWindowsUpdate。
您可以在脚本中包含类似的内容以检查是否已安装PSWindowsUpdate,如果没有,请安装它。
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
$Modules = "PSWindowsUpdate"
$Modules | ForEach-Object {
If (!(Get-Module -ListAvailable -Name $_)) {
Install-Module $_ -Verbose -Confirm:$false
}
}
我认为Install-Module需要PowerShell 5.0版。
然后,您将使用Get-WUInstall从WSUS服务器安装更新。 (如果通过GPO配置,它看起来默认为WSUS。)
可能会输入-Confirm:$ False以避免它提示您允许每次更新。
有关PSWindowsUpdate的更多信息:https://github.com/joeypiccola/PSWindowsUpdate