使用PowerShell / PowerCLI自动化WSUS更新

时间:2017-09-01 14:27:58

标签: powershell powercli

我希望自动化在我的VM上安装WSUS更新的过程。简要概述,以下是我想要完成的事情(请告诉我,如果我的方法是愚蠢的,我很乐意为所有这些学习正确的方法。):

  • 检查特定VM是否有要安装的WSUS更新
  • 如果有可用更新,请拍摄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上?

1 个答案:

答案 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