Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell/PowerCLI自动化WSUS更新_Powershell_Powercli - Fatal编程技术网

使用PowerShell/PowerCLI自动化WSUS更新

使用PowerShell/PowerCLI自动化WSUS更新,powershell,powercli,Powershell,Powercli,我希望在我的虚拟机上自动安装WSUS更新。简单概述一下,以下是我想要完成的事情(如果我的方法很愚蠢,请告诉我,我很想学习正确的方法。): 检查特定VM是否要安装任何WSUS更新 如果有可用的更新,请拍摄虚拟机的快照 开始WSUS安装 如有必要,请重新启动系统 我目前能够检查特定VM是否有更新并拍摄快照。现在我知道我可以运行脚本的这一部分,并配置一个GPO来完成其余的任务,但我的想法是,如果我可以在脚本中完成这一切,我将能够在安装更新之前检查VM的快照是否存在。下面你可以看到我的脚本现在做了什

我希望在我的虚拟机上自动安装WSUS更新。简单概述一下,以下是我想要完成的事情(如果我的方法很愚蠢,请告诉我,我很想学习正确的方法。):

  • 检查特定VM是否要安装任何WSUS更新
  • 如果有可用的更新,请拍摄虚拟机的快照
  • 开始WSUS安装
  • 如有必要,请重新启动系统
我目前能够检查特定VM是否有更新并拍摄快照。现在我知道我可以运行脚本的这一部分,并配置一个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
      }
   }
}
在此之后,我想执行一个检查,看看是否存在虚拟机的快照,然后安装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此时需要填充的方式。尝试一下,我会让您知道它是如何运行的。我的一些虚拟机需要最新的框架软件包,所以我必须首先推出它。