使用任务计划程序在重新启动后启动PowerShell脚本

时间:2017-02-17 10:25:31

标签: powershell scripting scheduled-tasks scheduledexecutorservice

所以我正在尝试编写一个执行以下操作的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. "
    }

上面的部分代码也完美无瑕。

我的问题是告诉我在每次重启后能以什么方式让这个脚本(或多个脚本?)运行,直到没有更多的更新...

由于

2 个答案:

答案 0 :(得分:1)

你已经走上正轨了。只需将一个计划任务添加到运行powershell.exe的系统中,并将脚本作为参数,并将任务触发器设置为"在启动时#34;

答案 1 :(得分:1)

Boxstarter可以比滚动自己的脚本更轻松地管理它。

然后使用此命令保存脚本:

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

Boxstarter还可以使用Chocolatey自动安装和设置其他软件的负载。有关示例,请参阅this link

如果无法正常工作,或者您真的想要推出自己的更新脚本,则需要查看工作流程,这些工作流程可以在重新启动后从中断处继续。请查看这两个链接(link1link2)以获取示例