使用PowerShell/PowerCLI自动化WSUS更新
我希望在我的虚拟机上自动安装WSUS更新。简单概述一下,以下是我想要完成的事情(如果我的方法很愚蠢,请告诉我,我很想学习正确的方法。):使用PowerShell/PowerCLI自动化WSUS更新,powershell,powercli,Powershell,Powercli,我希望在我的虚拟机上自动安装WSUS更新。简单概述一下,以下是我想要完成的事情(如果我的方法很愚蠢,请告诉我,我很想学习正确的方法。): 检查特定VM是否要安装任何WSUS更新 如果有可用的更新,请拍摄虚拟机的快照 开始WSUS安装 如有必要,请重新启动系统 我目前能够检查特定VM是否有更新并拍摄快照。现在我知道我可以运行脚本的这一部分,并配置一个GPO来完成其余的任务,但我的想法是,如果我可以在脚本中完成这一切,我将能够在安装更新之前检查VM的快照是否存在。下面你可以看到我的脚本现在做了什
- 检查特定VM是否要安装任何WSUS更新
- 如果有可用的更新,请拍摄虚拟机的快照
- 开始WSUS安装
- 如有必要,请重新启动系统
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
}
}
}
在此之后,我想执行一个检查,看看是否存在虚拟机的快照,然后安装WSUS更新。如果需要重新启动,请重新启动
有办法做到这一点吗?有更好的方法吗?如果你能给我一些见解,我会非常感激的,我对Powershell还是个新手
编辑:我已经检查了PSWindowsUpdate模块,是否需要在我计划更新的每个VM上安装该模块?是的,您需要在每个VM上安装PSWindowsUpdate 您可以在脚本中包含类似的内容,以检查是否安装了PSWindowsUpdate,如果未安装,请安装它
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
$Modules = "PSWindowsUpdate"
$Modules | ForEach-Object {
If (!(Get-Module -ListAvailable -Name $_)) {
Install-Module $_ -Verbose -Confirm:$false
}
}
我认为安装模块需要PowerShell 5.0版
然后,您将使用Get WUInstall从WSUS服务器安装更新。(如果通过GPO配置,它看起来默认为WSUS。)
可能会添加一个-Confirm:$False,以避免提示您允许每次更新
有关PSWindowsUpdate的更多信息:如何获取
$vms
的列表?@TheIncorrigible1我没有在脚本中包含该部分,$vms通过文本文件填充。这就是$vms此时需要填充的方式。尝试一下,我会让您知道它是如何运行的。我的一些虚拟机需要最新的框架软件包,所以我必须首先推出它。