1

所以我想写一个PowerShell脚本,做以下操作:使用任务计划程序重新启动后,开始PowerShell脚本

  • 下载&安装Windows更新(完成)
  • 自动重新引导(已完成)在重新启动后
  • 检查是否还有任何更新
  • 去回至开始直到有没有更多的更新左

我已经构建了我的PowerShell脚本如下:

Import-Module PSWindowsUpdate 

Get-Command –module PSWindowsUpdate 

Add-WUServiceManager -ServiceID 7971f918-a847-4430-9279-4a52d1efe18d 

Get-WUInstall –MicrosoftUpdate –AcceptAll –AutoReboot 

其中一期工程完美。

但是,根据某些情况,重新启动后仍有可用的更新可以下载和安装。

我想要做的是在每次重新启动后继续运行上面的脚本,直到没有更多的更新需要下载安装的&。

我发现的是在Windows中的Task scheduler可能很方便。

我也已经构建是一个“逻辑”,以检查是否有留下任何更新(并安装):

$Output = (Get-WUInstall -MicrosoftUpdate -ListOnly) | Out-String 
if($Output.Contains("Update")) 
    { 
      Write-Host "Updates Available, they will be installed..." 
      Get-WUInstall –MicrosoftUpdate –AcceptAll –AutoReboot 
    }else 

    { 
    Write-Host "There are no updates available. " 
    } 

和上面的一块代码也完美的作品。

我的问题是用什么方式告知我可以让这个脚本(或多个脚本?)运行每次开机后,直到没有剩下更多的更新......

感谢

回答

1

你是在正确的轨道已经。只需将一个计划任务添加到系统中,并将脚本作为参数运行powershell.exe,并将任务触发器设置为“启动时”

+0

非常感谢TToni,但我在想,这是不是说我的脚本在每次重新启动后都会继续运行(即使没有更多的更新了?) 。或者你是否将此视为“长期使用的脚本”? –

+0

您可以向脚本添加逻辑,以便在没有更多安装更新时通过使用此cmdlet删除计划任务:'Unregister-ScheduledTask' (请参阅:https://blogs.technet.microsoft.com/heyscriptingguy/2015/01/16/powertip-use-powershell-to-delete-scheduled-task /) –

+0

谢谢马克!我会毫不犹豫地进行检查 –

1

Boxstarter比您滚动自己的脚本更容易管理此任务。

然后保存脚本使用下面的命令:

# Update Windows and reboot if necessary 
Install-WindowsUpdate -AcceptEula 

Boxstarter还可以自动安装和其他软件负载,使用的巧克力的设置。请参阅this link以获取大量示例。

如果工作失败,或者如果您确实想要推出自己的更新脚本,则需要查看工作流程,这些工作流程可以在重新启动后从停止的位置恢复。检查这两个链接(link1,link2)例如

相关问题