Использование планировщика задач для запуска сценария PowerShell после перезагрузки

Итак, я пытаюсь написать сценарий powershell, который делает следующее:

  • Загрузите и установите обновления Windows (сделано)
  • Автоматически перезагружается (сделано)
  • Проверяет после перезагрузки, есть ли еще обновления
  • Возвращается к началу, пока не останется больше обновлений

Я уже построил свой сценарий powershell следующим образом:

Import-Module PSWindowsUpdate

Get-Command –module PSWindowsUpdate

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

Get-WUInstall –MicrosoftUpdate –AcceptAll –AutoReboot

Который работает идеально.

Однако, в зависимости от некоторых вещей, возможно, что после перезагрузки все еще есть доступные обновления, которые можно загрузить и установить.

Что я хочу сделать, так это продолжать запускать приведенный выше сценарий после каждой перезагрузки, пока не останется больше обновлений для загрузки и установки.

Что я узнал, так это Task schedulerin Windows, который может быть удобен.

Я также построил «логику», чтобы проверить, остались ли какие-либо обновления (и установить их):

$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. "
    }

И приведенный выше фрагмент кода также работает без нареканий.

Мой вопрос состоял в том, чтобы сообщить, каким образом я могу позволить этому сценарию (или нескольким сценариям?) запускаться после каждой перезагрузки, пока не останется обновлений...

Спасибо


person Kahn Kah    schedule 17.02.2017    source источник


Ответы (2)


Вы уже на правильном пути. Просто добавьте запланированную задачу в свою систему, которая запускает powershell.exe с вашим сценарием в качестве параметра, и установите триггер задачи на «При запуске».

person TToni    schedule 17.02.2017
comment
Большое спасибо TToni, но я тут подумал, а не значит ли это, что мой скрипт продолжает работать после каждой перезагрузки (даже когда обновлений больше не осталось?). Или вы рассматриваете это как «сценарий, используемый в долгосрочной перспективе»? - person Kahn Kah; 17.02.2017
comment
Вы можете добавить в свой сценарий логику, которая удаляет запланированную задачу, когда больше нет обновлений для установки, с помощью этого командлета: Unregister-ScheduledTask (см.: blogs.technet.microsoft.com/heyscriptingguy/2015/01/16/) - person Mark Wragg; 17.02.2017
comment
Спасибо, Марк! проверю обязательно - person Kahn Kah; 17.02.2017

Boxstarter справится с этим проще, чем вы будете запускать свои собственные скрипты.

Затем вы сохраняете скрипт с помощью этой команды:

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

Boxstarter также может автоматизировать установку и настройку множества других программ с помощью Chocolatey. См. эту ссылку для множества примеров.

Если это не сработает или если вы действительно хотите запустить свой собственный сценарий обновления, вам нужно посмотреть на рабочие процессы, которые могут возобновиться с того места, где они остановились после перезагрузки. Проверьте эти две ссылки (link1, link2) для примеров

person TechSpud    schedule 17.02.2017